Merge branch 'master' of ssh://proxdev.maurer-it.com/rust/proxmox-backup
This commit is contained in:
@ -87,14 +87,14 @@ pub fn backup(
|
||||
// early check before starting worker
|
||||
check_drive_exists(&drive_config, &pool_config.drive)?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let eject_media = eject_media.unwrap_or(false);
|
||||
let export_media_set = export_media_set.unwrap_or(false);
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"tape-backup",
|
||||
Some(store.clone()),
|
||||
Some(store),
|
||||
auth_id,
|
||||
to_stdout,
|
||||
move |worker| {
|
||||
|
@ -226,7 +226,7 @@ pub fn erase_media(
|
||||
|
||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"erase-media",
|
||||
@ -267,7 +267,7 @@ pub fn rewind(
|
||||
|
||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"rewind-media",
|
||||
@ -353,7 +353,7 @@ pub fn label_media(
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"label-media",
|
||||
@ -595,7 +595,7 @@ pub fn clean_drive(
|
||||
|
||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"clean-drive",
|
||||
@ -722,7 +722,7 @@ pub fn update_inventory(
|
||||
|
||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"inventory-update",
|
||||
@ -735,7 +735,7 @@ pub fn update_inventory(
|
||||
|
||||
let label_text_list = changer.online_media_label_texts()?;
|
||||
if label_text_list.is_empty() {
|
||||
worker.log(format!("changer device does not list any media labels"));
|
||||
worker.log("changer device does not list any media labels".to_string());
|
||||
}
|
||||
|
||||
let state_path = Path::new(TAPE_STATUS_DIR);
|
||||
@ -752,11 +752,9 @@ pub fn update_inventory(
|
||||
|
||||
let label_text = label_text.to_string();
|
||||
|
||||
if !read_all_labels.unwrap_or(false) {
|
||||
if let Some(_) = inventory.find_media_by_label_text(&label_text) {
|
||||
worker.log(format!("media '{}' already inventoried", label_text));
|
||||
continue;
|
||||
}
|
||||
if !read_all_labels.unwrap_or(false) && inventory.find_media_by_label_text(&label_text).is_some() {
|
||||
worker.log(format!("media '{}' already inventoried", label_text));
|
||||
continue;
|
||||
}
|
||||
|
||||
if let Err(err) = changer.load_media(&label_text) {
|
||||
@ -824,7 +822,7 @@ pub fn barcode_label_media(
|
||||
|
||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"barcode-label-media",
|
||||
@ -1002,7 +1000,7 @@ pub fn catalog_media(
|
||||
|
||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"catalog-media",
|
||||
@ -1060,10 +1058,8 @@ pub fn catalog_media(
|
||||
|
||||
let _lock = MediaPool::lock(status_path, &pool)?;
|
||||
|
||||
if MediaCatalog::exists(status_path, &media_id.label.uuid) {
|
||||
if !force {
|
||||
bail!("media catalog exists (please use --force to overwrite)");
|
||||
}
|
||||
if MediaCatalog::exists(status_path, &media_id.label.uuid) && !force {
|
||||
bail!("media catalog exists (please use --force to overwrite)");
|
||||
}
|
||||
|
||||
restore_media(&worker, &mut drive, &media_id, None, verbose)?;
|
||||
|
@ -197,7 +197,6 @@ pub fn destroy_media(label_text: String, force: Option<bool>,) -> Result<(), Err
|
||||
}
|
||||
|
||||
let uuid = media_id.label.uuid.clone();
|
||||
drop(media_id);
|
||||
|
||||
inventory.remove_media(&uuid)?;
|
||||
|
||||
|
@ -115,7 +115,7 @@ pub fn restore(
|
||||
// early check before starting worker
|
||||
check_drive_exists(&drive_config, &pool_config.drive)?;
|
||||
|
||||
let to_stdout = if rpcenv.env_type() == RpcEnvironmentType::CLI { true } else { false };
|
||||
let to_stdout = rpcenv.env_type() == RpcEnvironmentType::CLI;
|
||||
|
||||
let upid_str = WorkerTask::new_thread(
|
||||
"tape-restore",
|
||||
@ -128,7 +128,7 @@ pub fn restore(
|
||||
|
||||
let members = inventory.compute_media_set_members(&media_set_uuid)?;
|
||||
|
||||
let media_list = members.media_list().clone();
|
||||
let media_list = members.media_list();
|
||||
|
||||
let mut media_id_list = Vec::new();
|
||||
|
||||
@ -234,7 +234,6 @@ pub fn restore_media(
|
||||
Some(reader) => reader,
|
||||
};
|
||||
|
||||
let target = target.clone();
|
||||
restore_archive(worker, reader, current_file_number, target, &mut catalog, verbose)?;
|
||||
}
|
||||
|
||||
@ -344,36 +343,26 @@ fn restore_chunk_archive<'a>(
|
||||
let mut decoder = ChunkArchiveDecoder::new(reader);
|
||||
|
||||
let result: Result<_, Error> = proxmox::try_block!({
|
||||
loop {
|
||||
match decoder.next_chunk()? {
|
||||
Some((digest, blob)) => {
|
||||
while let Some((digest, blob)) = decoder.next_chunk()? {
|
||||
if let Some(datastore) = datastore {
|
||||
let chunk_exists = datastore.cond_touch_chunk(&digest, false)?;
|
||||
if !chunk_exists {
|
||||
blob.verify_crc()?;
|
||||
|
||||
if let Some(datastore) = datastore {
|
||||
let chunk_exists = datastore.cond_touch_chunk(&digest, false)?;
|
||||
if !chunk_exists {
|
||||
blob.verify_crc()?;
|
||||
|
||||
if blob.crypt_mode()? == CryptMode::None {
|
||||
blob.decode(None, Some(&digest))?; // verify digest
|
||||
}
|
||||
if verbose {
|
||||
worker.log(format!("Insert chunk: {}", proxmox::tools::digest_to_hex(&digest)));
|
||||
}
|
||||
datastore.insert_chunk(&blob, &digest)?;
|
||||
} else {
|
||||
if verbose {
|
||||
worker.log(format!("Found existing chunk: {}", proxmox::tools::digest_to_hex(&digest)));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if verbose {
|
||||
worker.log(format!("Found chunk: {}", proxmox::tools::digest_to_hex(&digest)));
|
||||
}
|
||||
if blob.crypt_mode()? == CryptMode::None {
|
||||
blob.decode(None, Some(&digest))?; // verify digest
|
||||
}
|
||||
chunks.push(digest);
|
||||
if verbose {
|
||||
worker.log(format!("Insert chunk: {}", proxmox::tools::digest_to_hex(&digest)));
|
||||
}
|
||||
datastore.insert_chunk(&blob, &digest)?;
|
||||
} else if verbose {
|
||||
worker.log(format!("Found existing chunk: {}", proxmox::tools::digest_to_hex(&digest)));
|
||||
}
|
||||
None => break,
|
||||
} else if verbose {
|
||||
worker.log(format!("Found chunk: {}", proxmox::tools::digest_to_hex(&digest)));
|
||||
}
|
||||
chunks.push(digest);
|
||||
}
|
||||
Ok(())
|
||||
});
|
||||
@ -390,7 +379,7 @@ fn restore_chunk_archive<'a>(
|
||||
|
||||
// check if this is an aborted stream without end marker
|
||||
if let Ok(false) = reader.has_end_marker() {
|
||||
worker.log(format!("missing stream end marker"));
|
||||
worker.log("missing stream end marker".to_string());
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
@ -407,7 +396,7 @@ fn restore_snapshot_archive<'a>(
|
||||
|
||||
let mut decoder = pxar::decoder::sync::Decoder::from_std(reader)?;
|
||||
match try_restore_snapshot_archive(&mut decoder, snapshot_path) {
|
||||
Ok(()) => return Ok(true),
|
||||
Ok(()) => Ok(true),
|
||||
Err(err) => {
|
||||
let reader = decoder.input();
|
||||
|
||||
@ -422,7 +411,7 @@ fn restore_snapshot_archive<'a>(
|
||||
}
|
||||
|
||||
// else the archive is corrupt
|
||||
return Err(err);
|
||||
Err(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user