[pbs-devel] [PATCH proxmox-backup 1/2] tape: simplify export_media_set for pool writer

Dominik Csapak d.csapak at proxmox.com
Fri Oct 15 10:32:58 CEST 2021


our export code can handle if the tape is inside the drive, so unloading
it first does not have an benefit, it even makes the exporting slower,
since we first unload it into its original slot, and then moving it
to an import/export slot

so drop the code that unloads the tape from the drive, and let the
export code itself handle that

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
tested on my virtual tape library, but would be grateful if someone else
tests this again on real hardware

 src/tape/pool_writer/mod.rs | 14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/src/tape/pool_writer/mod.rs b/src/tape/pool_writer/mod.rs
index cc069ff5..9ff4a173 100644
--- a/src/tape/pool_writer/mod.rs
+++ b/src/tape/pool_writer/mod.rs
@@ -150,21 +150,9 @@ impl PoolWriter {
 
     /// Export current media set and drop PoolWriterState (close drive)
     pub fn export_media_set(&mut self, worker: &WorkerTask) -> Result<(), Error> {
-        let mut status = self.status.take();
-
         let (drive_config, _digest) = pbs_config::drive::config()?;
 
         if let Some((mut changer, _)) = media_changer(&drive_config, &self.drive_name)? {
-
-            if let Some(ref mut status) = status {
-                task_log!(worker, "eject media");
-                status.drive.eject_media()?; // rewind and eject early, so that unload_media is faster
-            }
-            drop(status); // close drive
-
-            task_log!(worker, "unload media");
-            changer.unload_media(None)?;
-
             for media_uuid in self.pool.current_media_list()? {
                 let media = self.pool.lookup_media(media_uuid)?;
                 let label_text = media.label_text();
@@ -175,7 +163,7 @@ impl PoolWriter {
                 }
             }
 
-        } else if let Some(mut status) = status {
+        } else if let Some(mut status) = self.status.take() {
             task_log!(worker, "standalone drive - ejecting media instead of export");
             status.drive.eject_media()?;
         }
-- 
2.30.2





More information about the pbs-devel mailing list