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 1A7F51FF13B for ; Wed, 06 May 2026 18:57:43 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id EA9081D7A; Wed, 6 May 2026 18:57:42 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup v2 02/10] api: config: rearrange independent code block for datastore creation Date: Wed, 6 May 2026 18:56:43 +0200 Message-ID: <20260506165651.1322947-3-c.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260506165651.1322947-1-c.ebner@proxmox.com> References: <20260506165651.1322947-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: 1778086518844 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.070 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: ATF5HDWAB32IOXE6RFENW7MEMRC6LZZK X-Message-ID-Hash: ATF5HDWAB32IOXE6RFENW7MEMRC6LZZK 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 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/api2/config/datastore.rs b/src/api2/config/datastore.rs index 16e85a636..7c3531a4b 100644 --- a/src/api2/config/datastore.rs +++ b/src/api2/config/datastore.rs @@ -126,6 +126,13 @@ pub(crate) fn do_create_datastore( .parse_property_string(datastore.tuning.as_deref().unwrap_or(""))?, )?; + 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)) => { @@ -155,13 +162,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