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 7B4E81FF15E for ; Tue, 21 Jul 2026 12:38:00 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 3124621528; Tue, 21 Jul 2026 12:37:54 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup v3 02/10] api: config: rearrange independent code block for datastore creation Date: Tue, 21 Jul 2026 12:36:35 +0200 Message-ID: <20260721103643.333028-3-c.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260721103643.333028-1-c.ebner@proxmox.com> References: <20260721103643.333028-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: 1784630221354 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.239 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: RB2DSOPE5POM7SYAWLDNMNR7Q37ELS76 X-Message-ID-Hash: RB2DSOPE5POM7SYAWLDNMNR7Q37ELS76 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 7c65470f9..fae289e70 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