[pbs-devel] [PATCH proxmox-backup] tape: increase timeout for moving medium in changer
Dominik Csapak
d.csapak at proxmox.com
Fri Jul 25 13:55:21 CEST 2025
meh sorry, i wrote '30 minutes' in the commit message when it should be '45'
i can send a v2 if necessary (or it could be fixed up on commit ?)
On 7/25/25 13:37, Dominik Csapak wrote:
> from the current 5 minutes to 30 minutes. According to documentation
> from vendors (e.g. HP see [0]) moving a medium between slots or to/from
> a drive can take up a much longer time than 5 minutes. (up to 38 minutes
> in a HP library) so increase the timeout we use here to something that
> exceeds these recommendations.
>
> 0: https://support.hpe.com/hpesc/public/docDisplay?docId=sd00001714en_us&page=GUID-D7147C7F-2016-0901-065E-00000000072C.html
>
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> pbs-tape/src/sg_pt_changer.rs | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/pbs-tape/src/sg_pt_changer.rs b/pbs-tape/src/sg_pt_changer.rs
> index 7122fcdb4..dd297a822 100644
> --- a/pbs-tape/src/sg_pt_changer.rs
> +++ b/pbs-tape/src/sg_pt_changer.rs
> @@ -18,6 +18,7 @@ use crate::{
> };
>
> const SCSI_CHANGER_DEFAULT_TIMEOUT: usize = 60 * 5; // 5 minutes
> +const SCSI_CHANGER_MOVE_MEDIUM_TIMEOUT: usize = 60 * 45; // 45 minutes
> const SCSI_VOLUME_TAG_LEN: usize = 36;
>
> /// Initialize element status (Inventory)
> @@ -181,7 +182,7 @@ pub fn load_slot(file: &mut File, from_slot: u64, drivenum: u64) -> Result<(), E
> );
>
> let mut sg_raw = SgRaw::new(file, 64)?;
> - sg_raw.set_timeout(SCSI_CHANGER_DEFAULT_TIMEOUT);
> + sg_raw.set_timeout(SCSI_CHANGER_MOVE_MEDIUM_TIMEOUT);
>
> sg_raw
> .do_command(&cmd)
> @@ -205,7 +206,7 @@ pub fn unload(file: &mut File, to_slot: u64, drivenum: u64) -> Result<(), Error>
> );
>
> let mut sg_raw = SgRaw::new(file, 64)?;
> - sg_raw.set_timeout(SCSI_CHANGER_DEFAULT_TIMEOUT);
> + sg_raw.set_timeout(SCSI_CHANGER_MOVE_MEDIUM_TIMEOUT);
>
> sg_raw
> .do_command(&cmd)
> @@ -233,7 +234,7 @@ pub fn transfer_medium<F: AsRawFd>(
> );
>
> let mut sg_raw = SgRaw::new(file, 64)?;
> - sg_raw.set_timeout(SCSI_CHANGER_DEFAULT_TIMEOUT);
> + sg_raw.set_timeout(SCSI_CHANGER_MOVE_MEDIUM_TIMEOUT);
>
> sg_raw.do_command(&cmd).map_err(|err| {
> format_err!(
More information about the pbs-devel
mailing list