From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 85FAF1FF146 for ; Tue, 12 May 2026 15:11:05 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A3F17134CC; Tue, 12 May 2026 15:11:03 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox{,-backup} v3 0/7] fix sync level updates for chunk store Date: Tue, 12 May 2026 15:10:40 +0200 Message-ID: <20260512131047.689089-1-c.ebner@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-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1778591344103 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.069 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [datastore.rs] Message-ID-Hash: FEWSFHNPW4KA3JJDCVKUG3GIHXT4D57E X-Message-ID-Hash: FEWSFHNPW4KA3JJDCVKUG3GIHXT4D57E X-MailFrom: c.ebner@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: Currently the sync level configured for a datastore is only propagated to the chunk store on first lookup, when the chunk store instance is created. Updating the sync level in the tuning options does invalidate the cached datastore entry, does however not re-instantiate the chunk store, to avoid dropping the locks acquired via the process locker. This means however the sync level on the chunk store is not updated. Fixed by storing the chunk store state inside the mutex, already present for syncing up concurrent access to the chunk store. This also improves the code style and fixes a few smaller issues encountered. Changes since version 2: - Include additional code cleanups Changes since version 1 (thanks @Robert for feedback!): - Fix lost sync level update, move implementation into chunk store instead - Only try ensuring the sync level if it actually changed and fix race window by taking the mutex guard for the check. - Avoid Arc for chunk store mutex, it can be shared by reference - Fixed typo proxmox: Christian Ebner (1): pbs-api-types: derive FromStr for DatastoreTuning parsing pbs-api-types/src/datastore.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) proxmox-backup: Christian Ebner (6): datastore: GC: avoid double parsing of datastore tuning options pbs-config/datastore: add common helper for parsing tuning options datastore: restrict chunk store mutex scope to crate only datastore: avoid useless double borrowing of datastore datastore: move try_ensure_sync_level() implementation to chunk store datastore: fix sync level update propagation to chunk store pbs-config/src/datastore.rs | 12 ++- pbs-datastore/src/chunk_store.rs | 82 ++++++++++++++----- pbs-datastore/src/datastore.rs | 73 ++++++++--------- .../src/local_datastore_lru_cache.rs | 12 +-- src/api2/config/datastore.rs | 12 +-- 5 files changed, 113 insertions(+), 78 deletions(-) Summary over all repositories: 6 files changed, 123 insertions(+), 78 deletions(-) -- Generated by murpp 0.11.0