]> git.proxmox.com Git - proxmox-backup.git/blobdiff - src/tape/pool_writer/mod.rs
tree-wide: fix needless borrows
[proxmox-backup.git] / src / tape / pool_writer / mod.rs
index cc069ff58b21a216e39c6561fd32f19ae7c2eb09..29860b536e9532c9d9c3c5cf0f3a8731affc0ed7 100644 (file)
@@ -12,8 +12,8 @@ use std::sync::{Arc, Mutex};
 use anyhow::{bail, Error};
 
 use proxmox_uuid::Uuid;
+use proxmox_sys::{task_log, task_warn};
 
-use pbs_tools::{task_log, task_warn};
 use pbs_config::tape_encryption_keys::load_key_configs;
 use pbs_tape::{
     TapeWrite,
@@ -117,7 +117,7 @@ impl PoolWriter {
 
     /// Set media status to FULL (persistent - stores pool status)
     pub fn set_media_status_full(&mut self, uuid: &Uuid) -> Result<(), Error> {
-        self.pool.set_media_status_full(&uuid)?;
+        self.pool.set_media_status_full(uuid)?;
         Ok(())
     }
 
@@ -157,21 +157,19 @@ impl PoolWriter {
         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
+                task_log!(worker, "rewind media");
+                // rewind first so that the unload command later does not run into a timeout
+                status.drive.rewind()?;
             }
             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();
                 if let Some(slot) = changer.export_media(label_text)? {
                     task_log!(worker, "exported media '{}' to import/export slot {}", label_text, slot);
                 } else {
-                    task_warn!(worker, "export failed - media '{}' is not online", label_text);
+                    task_warn!(worker, "export failed - media '{}' is not online or in different drive", label_text);
                 }
             }
 
@@ -556,9 +554,9 @@ fn write_chunk_archive<'a>(
             Some(Err(err)) => bail!("{}", err),
         };
 
-        //println!("CHUNK {} size {}", proxmox::tools::digest_to_hex(digest), blob.raw_size());
+        //println!("CHUNK {} size {}", hex::encode(digest), blob.raw_size());
 
-        match writer.try_write_chunk(&digest, &blob) {
+        match writer.try_write_chunk(digest, blob) {
             Ok(true) => {
                 chunk_list.push(*digest);
                 chunk_iter.next(); // consume
@@ -629,7 +627,7 @@ fn update_media_set_label(
                 if new_set.encryption_key_fingerprint != media_set_label.encryption_key_fingerprint {
                     bail!("detected changed encryption fingerprint - internal error");
                 }
-                media_catalog = MediaCatalog::open(status_path, &media_id, true, false)?;
+                media_catalog = MediaCatalog::open(status_path, media_id, true, false)?;
 
                 // todo: verify last content/media_catalog somehow?