From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id 261BD1FF0AA for ; Fri, 21 Aug 2026 13:18:50 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 8100B215D3; Fri, 21 Aug 2026 13:18:47 +0200 (CEST) From: Jakob Klocker To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup v2 0/3] fix #6990: server: drop verify state on push & pull job Date: Fri, 21 Aug 2026 13:18:23 +0200 Message-ID: <20260821111826.299588-1-j.klocker@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 1 AWL -0.527 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods RDNS_NONE 1.274 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Message-ID-Hash: 22OBWQVUWJYPSHO7JQP2GBS2UWVSOMI5 X-Message-ID-Hash: 22OBWQVUWJYPSHO7JQP2GBS2UWVSOMI5 X-MailFrom: jklocker@iris.proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Jakob Klocker X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Backup Server development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: When syncing a snapshot to another datastore, the source's verify_state is currently carried over to the target. This reports the target snapshot as verified even though its stored copy was never checked there. Since verify jobs skip snapshots that already carry a verify_state, the target's copy can't be verified again. Chunks are checksummed in memory while being transferred, but a verify serves a different purpose: confirming the write to the (external) target actually succeeded. This series drops verify_state on sync so the target is verified independently. It also moves the blocking calls in the touched code paths off the runtime's worker threads onto the blocking thread pool. Tested (verify_state correctly stripped on target): * Pull, verified source, new content, clean sync * Pull, verified source, existing content, clean sync * Pull, corrupted target, resync-corrupt * Push, verified source (has no corrupt path) * Pull, independently-verified target, clean re-sync - state preserved changes from v1 to v2 (thanks @Christian): * move the manifest write helper onto `BackupManifest` * offload fsync, rename and cleanup to `spawn_blocking()` Link: https://bugzilla.proxmox.com/show_bug.cgi?id=6990 proxmox-backup: Jakob Klocker (3): server: pull: run blocking file operations on the blocking pool fix #6990: server: drop verify state on push job fix #6990: server: drop verify state on non-decrypt pull job pbs-datastore/src/manifest.rs | 25 +++++++++++++++- src/server/pull.rs | 56 ++++++++++++++++++++++------------- src/server/push.rs | 7 +++++ 3 files changed, 67 insertions(+), 21 deletions(-) Summary over all repositories: 3 files changed, 67 insertions(+), 21 deletions(-) -- Generated by murpp 0.12.0