From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id D72C61FF125 for ; Mon, 03 Aug 2026 11:08:38 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 7087C21573; Mon, 03 Aug 2026 11:08:10 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup v4 04/14] api: config: rearrange independent code block for datastore creation Date: Mon, 3 Aug 2026 11:07:37 +0200 Message-ID: <20260803090747.265683-5-c.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260803090747.265683-1-c.ebner@proxmox.com> References: <20260803090747.265683-1-c.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1785748073085 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.140 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) RCVD_IN_DNSWL_LOW -0.7 Sender listed at https://www.dnswl.org/, low trust 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: UG6OJQ5WWIJ4LUV56JZN2OWXSMXERBK3 X-Message-ID-Hash: UG6OJQ5WWIJ4LUV56JZN2OWXSMXERBK3 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: In preparation for moving most of the datastore creation logic from the worker task helper to the datastore implementation itself. The unmount guard is only crated for removable datastores, so it can also be placed before the backend type check and s3 client instantiation. No functional changes. Signed-off-by: Christian Ebner --- src/api2/config/datastore.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/api2/config/datastore.rs b/src/api2/config/datastore.rs index 808422a36..84bdfd891 100644 --- a/src/api2/config/datastore.rs +++ b/src/api2/config/datastore.rs @@ -122,6 +122,14 @@ pub(crate) fn do_create_datastore( } let tuning = pbs_config::datastore::parse_datastore_tuning_options(&datastore)?; + + let unmount_guard = if datastore.backing_device.is_some() { + do_mount_device(datastore.clone())?; + UnmountGuard::new(Some(path.clone())) + } else { + UnmountGuard::new(None) + }; + let (backend_type, backend_s3_client) = match DataStore::s3_client_and_backend_from_datastore_config(&datastore)? { (backend_type, Some(s3_client)) => { @@ -151,13 +159,6 @@ pub(crate) fn do_create_datastore( (backend_type, None) => (backend_type, None), }; - let unmount_guard = if datastore.backing_device.is_some() { - do_mount_device(datastore.clone())?; - UnmountGuard::new(Some(path.clone())) - } else { - UnmountGuard::new(None) - }; - let chunk_store = if reuse_datastore && backend_type == DatastoreBackendType::Filesystem { ChunkStore::verify_chunkstore(&path).and_then(|_| { // Must be the only instance accessing and locking the chunk store, -- 2.47.3