From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 1D3BA1FF179 for ; Wed, 26 Nov 2025 14:34:54 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 44047C49E; Wed, 26 Nov 2025 14:35:06 +0100 (CET) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Wed, 26 Nov 2025 14:34:18 +0100 Message-ID: <20251126133419.570874-4-c.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251126133419.570874-1-c.ebner@proxmox.com> References: <20251126133419.570874-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1764164034444 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.046 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH proxmox-backup 3/4] chunk store: invert chunk filename checks in chunk store iterator X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Optimizes the chunk filename check towards regular chunk files by explicitley checking for the correct length. While the check for ascii hexdigits needs to be stated twice, this avoids to check for the `.bad` extension if the chunk filename did already match the expected length. This will also help to better distinguish bad chunks and chunks used markers for s3 datastores in subsequent changes. Signed-off-by: Christian Ebner --- pbs-datastore/src/chunk_store.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pbs-datastore/src/chunk_store.rs b/pbs-datastore/src/chunk_store.rs index a5e5f6261..7980938ad 100644 --- a/pbs-datastore/src/chunk_store.rs +++ b/pbs-datastore/src/chunk_store.rs @@ -315,15 +315,20 @@ impl ChunkStore { Some(Ok(entry)) => { // skip files if they're not a hash let bytes = entry.file_name().to_bytes(); - if bytes.len() != 64 && bytes.len() != 64 + ".0.bad".len() { - continue; + + if bytes.len() == 64 && bytes.iter().take(64).all(u8::is_ascii_hexdigit) + { + return Some((Ok(entry), percentage, false)); } - if !bytes.iter().take(64).all(u8::is_ascii_hexdigit) { - continue; + + if bytes.len() == 64 + ".0.bad".len() + && bytes.iter().take(64).all(u8::is_ascii_hexdigit) + { + let bad = bytes.ends_with(b".bad"); + return Some((Ok(entry), percentage, bad)); } - let bad = bytes.ends_with(b".bad"); - return Some((Ok(entry), percentage, bad)); + continue; } Some(Err(err)) => { // stop after first error -- 2.47.3 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel