diff --git a/src/api2/tape/restore.rs b/src/api2/tape/restore.rs index 1db64077..2b4102d1 100644 --- a/src/api2/tape/restore.rs +++ b/src/api2/tape/restore.rs @@ -343,32 +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(()) }); diff --git a/src/tools/parallel_handler.rs b/src/tools/parallel_handler.rs index 5482ccb3..f2480b2f 100644 --- a/src/tools/parallel_handler.rs +++ b/src/tools/parallel_handler.rs @@ -134,11 +134,7 @@ impl ParallelHandler { let mut msg_list = Vec::new(); let mut i = 0; - loop { - let handle = match self.handles.pop() { - Some(handle) => handle, - None => break, - }; + while let Some(handle) = self.handles.pop() { if let Err(panic) = handle.join() { match panic.downcast::<&str>() { Ok(panic_msg) => msg_list.push(