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 C6A231FF139 for ; Tue, 10 Feb 2026 16:06:51 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3C22167FE; Tue, 10 Feb 2026 16:07:36 +0100 (CET) From: Robert Obkircher To: pbs-devel@lists.proxmox.com Subject: [PATCH v6 proxmox-backup 02/18] datastore: remove Arc from DynamicIndexWriter Date: Tue, 10 Feb 2026 16:06:18 +0100 Message-ID: <20260210150642.469670-3-r.obkircher@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260210150642.469670-1-r.obkircher@proxmox.com> References: <20260210150642.469670-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: 1770735938007 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.062 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: VJIXT2MMUYRS3LTH6NY323XXAMSJ6FRL X-Message-ID-Hash: VJIXT2MMUYRS3LTH6NY323XXAMSJ6FRL 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: Remain consistent with the FixedIndexWriter and make it easier to add tests in the future. The ChunkStore reference can be safely removed, because it was only needed for the base directory. As discussed previously [1], it is the callers responsibility to ensure that the writer doesn't outlive any locks. [1] https://lore.proxmox.com/pbs-devel/1761822027.sm41v71zmk.astroid@yuna.none/ Signed-off-by: Robert Obkircher --- pbs-datastore/src/datastore.rs | 5 ++--- pbs-datastore/src/dynamic_index.rs | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs index 1c631817..b023b0d3 100644 --- a/pbs-datastore/src/datastore.rs +++ b/pbs-datastore/src/datastore.rs @@ -718,9 +718,8 @@ impl DataStore { &self, filename: P, ) -> Result { - let index = DynamicIndexWriter::create(self.inner.chunk_store.clone(), filename.as_ref())?; - - Ok(index) + let full_path = self.inner.chunk_store.relative_path(filename.as_ref()); + DynamicIndexWriter::create(full_path) } pub fn open_dynamic_reader>( diff --git a/pbs-datastore/src/dynamic_index.rs b/pbs-datastore/src/dynamic_index.rs index ad49cdf3..e2fe09a4 100644 --- a/pbs-datastore/src/dynamic_index.rs +++ b/pbs-datastore/src/dynamic_index.rs @@ -16,7 +16,6 @@ use pxar::accessor::{MaybeReady, ReadAt, ReadAtOperation}; use pbs_tools::lru_cache::LruCache; -use crate::chunk_store::ChunkStore; use crate::file_formats; use crate::index::{ChunkReadInfo, IndexFile}; use crate::read_chunk::ReadChunk; @@ -289,8 +288,8 @@ impl Drop for DynamicIndexWriter { impl DynamicIndexWriter { // Requires obtaining a shared chunk store lock beforehand - pub fn create(store: Arc, path: &Path) -> Result { - let full_path = store.relative_path(path); + pub fn create(full_path: impl Into) -> Result { + let full_path = full_path.into(); let mut tmp_path = full_path.clone(); tmp_path.set_extension("tmp_didx"); -- 2.47.3