From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 7B96D8910D for ; Fri, 29 Jul 2022 11:24:40 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6E6931B2FC for ; Fri, 29 Jul 2022 11:24:40 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 29 Jul 2022 11:24:39 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 0D07742C8A for ; Fri, 29 Jul 2022 11:24:39 +0200 (CEST) Date: Fri, 29 Jul 2022 11:24:38 +0200 From: Wolfgang Bumiller To: Hannes Laimer Cc: pbs-devel@lists.proxmox.com Message-ID: <20220729092438.e3qc7eynrh3felun@wobu-vie.proxmox.com> References: <20220705130834.14285-1-h.laimer@proxmox.com> <20220705130834.14285-12-h.laimer@proxmox.com> <20220706114348.ls53m5eftcjgxl7m@casey.proxmox.com> <1587b21b-8b8a-0214-9706-29221bee8a2f@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1587b21b-8b8a-0214-9706-29221bee8a2f@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.275 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% 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 Subject: Re: [pbs-devel] [PATCH proxmox-backup 09/26] api2: admin: add unmount-device endpoint to datastore 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: , X-List-Received-Date: Fri, 29 Jul 2022 09:24:40 -0000 On Thu, Jul 07, 2022 at 11:11:23AM +0200, Hannes Laimer wrote: > Am 06.07.22 um 13:43 schrieb Wolfgang Bumiller: > > On Tue, Jul 05, 2022 at 01:08:17PM +0000, Hannes Laimer wrote: > > > +fn do_unmount_device( > > > + _lock: BackupLockGuard, > > > + mut config: SectionConfigData, > > > + mut datastore: DataStoreConfig, > > > + worker: Option<&dyn WorkerTaskContext>, > > > +) -> Result<(), Error> { > > > + datastore.set_maintenance_mode(MaintenanceMode::new(MaintenanceType::Unplugged, None)); > > > + config.set_data(&datastore.name, "datastore", &datastore)?; > > > + pbs_config::datastore::save_config(&config)?; > > > + drop(_lock); > > > + > > > + let mut active_operations = task_tracking::get_active_operations(&datastore.name)?; > > > + while active_operations.read + active_operations.write > 0 { > > > > I'd again prefer to fail than loop endlessly... > The idea was you start some sync/verify and then go to sleep or smth, so > it would unmount the device asap. But yes, we can also fail. I'd still prefer to fail for now in a way that the API user can actually distinguish easily. I'd rather have the API user retry the API call than have them potentially wait hours for a response, wondering if the connection is still alive. Perhaps we could add a "pending unmount" flag somewhere (possibly in the active operation counter) and make it so the last user then unmounts it? The API user would have to poll the status though. Thomas and I also recently touched on the topic of "events" an API user could monitor/subscribe to, that might also be something to consider here.