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 0C2AF1FF0AA for ; Tue, 06 Oct 2026 16:47:16 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id A7637214D7; Tue, 06 Oct 2026 16:47:09 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup v5 04/14] api: config: rearrange independent code block for datastore creation Date: Tue, 6 Oct 2026 16:46:34 +0200 Message-ID: <20261006144644.744818-5-c.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261006144644.744818-1-c.ebner@proxmox.com> References: <20261006144644.744818-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: 1791298025250 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.606 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_MED -2.3 Sender listed at https://www.dnswl.org/, medium 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: 7NBHNUORLXSZNTZFMMS3J5B5YFF6K7U7 X-Message-ID-Hash: 7NBHNUORLXSZNTZFMMS3J5B5YFF6K7U7 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 created 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