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 11CF91FF17A for ; Tue, 14 Oct 2025 17:31:46 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3CC239499; Tue, 14 Oct 2025 17:32:04 +0200 (CEST) Mime-Version: 1.0 Date: Tue, 14 Oct 2025 17:31:30 +0200 Message-Id: To: "Hannes Laimer" X-Mailer: aerc 0.20.0 References: <20251014115357.81105-1-h.laimer@proxmox.com> <20251014115357.81105-4-h.laimer@proxmox.com> In-Reply-To: <20251014115357.81105-4-h.laimer@proxmox.com> From: "Shannon Sterz" X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1760455853414 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.054 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [datastore.rs] Subject: Re: [pbs-devel] [PATCH proxmox-backup 2/3] api: datastore: unmount datastore after sync if configured X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Cc: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" On Tue Oct 14, 2025 at 1:53 PM CEST, Hannes Laimer wrote: > When a sync job is triggered by the mounting of a datastore, we now check > whether it should also be unmounted automatically afterwards. This is only > done for jobs triggered by mounting. > > We do not do this for manually started or scheduled sync jobs, as those > run in the proxy process and therefore cannot call the privileged API > endpoint for unmounting. > > The task that starts sync jobs on mount runs in the API process (where the > mounting occurs), so in that privileged context, we can also perform the > unmounting. > > Signed-off-by: Hannes Laimer > --- > src/api2/admin/datastore.rs | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs > index 643d1694..7e3cec22 100644 > --- a/src/api2/admin/datastore.rs > +++ b/src/api2/admin/datastore.rs > @@ -2430,6 +2430,7 @@ pub fn do_mount_device(datastore: DataStoreConfig) -> Result { > > async fn do_sync_jobs( > jobs_to_run: Vec, > + store: String, > worker: Arc, > ) -> Result<(), Error> { > let count = jobs_to_run.len(); > @@ -2442,6 +2443,8 @@ async fn do_sync_jobs( > .join(", ") > ); > > + let mut unmount_on_done = false; > + > let client = crate::client_helpers::connect_to_localhost() > .context("Failed to connect to localhost for starting sync jobs")?; > for (i, job_config) in jobs_to_run.into_iter().enumerate() { > @@ -2484,7 +2487,21 @@ async fn do_sync_jobs( > } > } > } > + unmount_on_done = unmount_on_done || job_config.unmount_on_done.unwrap_or_default(); this could be: unmount_on_done |= job_config.unmount_on_done.unwrap_or_default(); > + } > + if unmount_on_done { > + match client > + .post( > + format!("api2/json/admin/datastore/{store}/unmount").as_str(), > + None, > + ) > + .await > + { > + Ok(_) => info!("triggered unmounting successfully"), > + Err(err) => warn!("could not unmount: {err}"), > + }; > } > + > Ok(()) > } > > @@ -2566,10 +2583,10 @@ pub fn mount(store: String, rpcenv: &mut dyn RpcEnvironment) -> Result info!("starting {} sync jobs", jobs_to_run.len()); > let _ = WorkerTask::spawn( > "mount-sync-jobs", > - Some(store), > + Some(store.clone()), > auth_id.to_string(), > false, > - move |worker| async move { do_sync_jobs(jobs_to_run, worker).await }, > + move |worker| async move { do_sync_jobs(jobs_to_run, store, worker).await }, > ); > } > Ok(()) _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel