[pbs-devel] [PATCH proxmox-backup 09/26] api2: admin: add unmount-device endpoint to datastore

Wolfgang Bumiller w.bumiller at proxmox.com
Fri Jul 29 11:24:38 CEST 2022


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.





More information about the pbs-devel mailing list