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,
/// 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(())
}
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);
}
}
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
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?