all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] applied: [PATCH backup] backup verify: re-check if we can skip a chunk in the actual verify loop
@ 2021-04-15  8:13 Thomas Lamprecht
  0 siblings, 0 replies; only message in thread
From: Thomas Lamprecht @ 2021-04-15  8:13 UTC (permalink / raw)
  To: pbs-devel

Fixes a non-negligible performance regression from commit
7f394c807bca3f451e77b6a1cf7de7c6e7df5f92

While we skip known-verified chunks in the stat-and-inode-sort loop,
those are only the ones from previous indexes. If there's a repeated
chunk in one index they would get re-verified more often as required.

So, add the check again explicitly to the read+verify loop.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
 src/backup/verify.rs | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/backup/verify.rs b/src/backup/verify.rs
index ed959813..1192821e 100644
--- a/src/backup/verify.rs
+++ b/src/backup/verify.rs
@@ -214,6 +214,12 @@ fn verify_index_chunks(
 
         let info = index.chunk_info(pos).unwrap();
 
+        // we must always recheck this here, the parallel worker below alter it!
+        // Else we miss skipping repeated chunks from the same index, and re-verify them all
+        if verify_worker.verified_chunks.lock().unwrap().contains(&info.digest) {
+            continue; // already verified
+        }
+
         match verify_worker.datastore.load_chunk(&info.digest) {
             Err(err) => {
                 verify_worker.corrupt_chunks.lock().unwrap().insert(info.digest);
-- 
2.29.2





^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-04-15  8:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-15  8:13 [pbs-devel] applied: [PATCH backup] backup verify: re-check if we can skip a chunk in the actual verify loop Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal