From f66f537da97068f89ae5f0fd1963f9042c0577d6 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 30 Jul 2020 09:09:03 +0200 Subject: [PATCH] verify: check all chunks of an index, even if we encounter a corrupt one this makes it easier to see which chunks are corrupt (and enables us in the future to build a 'complete' list of corrupt chunks) Signed-off-by: Dominik Csapak --- src/backup/verify.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/backup/verify.rs b/src/backup/verify.rs index 33aaa621..9e309b12 100644 --- a/src/backup/verify.rs +++ b/src/backup/verify.rs @@ -42,6 +42,7 @@ fn verify_index_chunks( worker: &WorkerTask, ) -> Result<(), Error> { + let mut errors = 0; for pos in 0..index.index_count() { worker.fail_on_abort()?; @@ -50,11 +51,19 @@ fn verify_index_chunks( let size = info.range.end - info.range.start; if !verified_chunks.contains(&info.digest) { - datastore.verify_stored_chunk(&info.digest, size)?; - verified_chunks.insert(info.digest); + if let Err(err) = datastore.verify_stored_chunk(&info.digest, size) { + worker.log(format!("{}", err)); + errors += 1; + } else { + verified_chunks.insert(info.digest); + } } } + if errors > 0 { + bail!("chunks could not be verified"); + } + Ok(()) }