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 B42941FF13C for ; Thu, 30 Apr 2026 17:06:36 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6078DE185; Thu, 30 Apr 2026 17:06:36 +0200 (CEST) From: Robert Obkircher To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup 01/10] task tracking: count Reclaim datastore operations as writes Date: Thu, 30 Apr 2026 17:05:42 +0200 Message-ID: <20260430150607.330413-5-r.obkircher@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260430150607.330413-1-r.obkircher@proxmox.com> References: <20260430150607.330413-1-r.obkircher@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1777561492865 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.061 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: 3FW6ULVJEOIYBDT2O2UH2F4TOO533C47 X-Message-ID-Hash: 3FW6ULVJEOIYBDT2O2UH2F4TOO533C47 X-MailFrom: r.obkircher@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 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: This ensures that changing a Write to a Reclaim does not break forward compatibility when older versions read the counters. Ideally, Write operations would also be tracked separately to display them as conflicts of the GarbageCollection maintenance mode, but an extra field would lead to parse errors in older versions which are not always propagated (for example when cloning a Datastore) and would thus result in incorrect values. Signed-off-by: Robert Obkircher --- pbs-datastore/src/task_tracking.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pbs-datastore/src/task_tracking.rs b/pbs-datastore/src/task_tracking.rs index 44a4522dc..c8833759b 100644 --- a/pbs-datastore/src/task_tracking.rs +++ b/pbs-datastore/src/task_tracking.rs @@ -106,6 +106,7 @@ pub fn update_active_operations( let mut updated_active_operations = match operation { Operation::Read => ActiveOperationStats { read: 1, write: 0 }, Operation::Write => ActiveOperationStats { read: 0, write: 1 }, + Operation::Reclaim => ActiveOperationStats { read: 0, write: 1 }, Operation::Lookup => ActiveOperationStats { read: 0, write: 0 }, }; let mut found_entry = false; @@ -121,6 +122,7 @@ pub fn update_active_operations( match operation { Operation::Read => task.active_operations.read += count, Operation::Write => task.active_operations.write += count, + Operation::Reclaim => task.active_operations.write += count, Operation::Lookup => (), // no IO must happen there }; updated_active_operations = task.active_operations; -- 2.47.3