[pbs-devel] [PATCH proxmox-backup 1/2] tape: changer: save whole LtoTapeDrive config in MtxMediaChanger
Dominik Csapak
d.csapak at proxmox.com
Thu Dec 7 13:51:01 CET 2023
we'll need more info from there in the future, so derive clone for it
and save the whole config instead of adding an additional field.
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
pbs-api-types/src/tape/drive.rs | 2 +-
src/tape/changer/mod.rs | 14 ++++++--------
2 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/pbs-api-types/src/tape/drive.rs b/pbs-api-types/src/tape/drive.rs
index ea2cbbd8..ec7c8395 100644
--- a/pbs-api-types/src/tape/drive.rs
+++ b/pbs-api-types/src/tape/drive.rs
@@ -59,7 +59,7 @@ pub struct VirtualTapeDrive {
},
}
)]
-#[derive(Serialize, Deserialize, Updater)]
+#[derive(Serialize, Deserialize, Updater, Clone)]
#[serde(rename_all = "kebab-case")]
/// Lto SCSI tape driver
pub struct LtoTapeDrive {
diff --git a/src/tape/changer/mod.rs b/src/tape/changer/mod.rs
index 0cb42486..bf0a15f4 100644
--- a/src/tape/changer/mod.rs
+++ b/src/tape/changer/mod.rs
@@ -384,8 +384,7 @@ fn load_changer_state_cache(changer: &str) -> Result<Option<MtxStatus>, Error> {
/// Implements MediaChange using 'mtx' linux cli tool
pub struct MtxMediaChanger {
- drive_name: String, // used for error messages
- drive_number: u64,
+ drive: LtoTapeDrive,
config: ScsiTapeChanger,
}
@@ -398,8 +397,7 @@ impl MtxMediaChanger {
};
Ok(Self {
- drive_name: drive_config.name.clone(),
- drive_number: drive_config.changer_drivenum.unwrap_or(0),
+ drive: drive_config.clone(),
config: changer_config,
})
}
@@ -407,11 +405,11 @@ impl MtxMediaChanger {
impl MediaChange for MtxMediaChanger {
fn drive_number(&self) -> u64 {
- self.drive_number
+ self.drive.changer_drivenum.unwrap_or(0)
}
fn drive_name(&self) -> &str {
- &self.drive_name
+ &self.drive.name
}
fn status(&mut self) -> Result<MtxStatus, Error> {
@@ -423,12 +421,12 @@ impl MediaChange for MtxMediaChanger {
}
fn load_media_from_slot(&mut self, slot: u64) -> Result<MtxStatus, Error> {
- self.config.load_slot(slot, self.drive_number)
+ self.config.load_slot(slot, self.drive_number())
}
fn unload_media(&mut self, target_slot: Option<u64>) -> Result<MtxStatus, Error> {
if let Some(target_slot) = target_slot {
- self.config.unload(target_slot, self.drive_number)
+ self.config.unload(target_slot, self.drive_number())
} else {
let status = self.status()?;
self.unload_to_free_slot(status)
--
2.39.2
More information about the pbs-devel
mailing list