[pbs-devel] [PATCH proxmox-backup v3 03/23] api/datastore: move snapshot deletion into dedicated datastore helper
Fabian Grünbichler
f.gruenbichler at proxmox.com
Thu Nov 6 10:37:56 CET 2025
On November 5, 2025 1:22 pm, Christian Ebner wrote:
> In an effort to move all datastore backend related logic to the
> datastore itself.
should we then make BackupDir::destroy pub(crate)?
>
> Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
> ---
> changes since version 2:
> - no changes
>
> pbs-datastore/src/datastore.rs | 9 +++++++++
> src/api2/admin/datastore.rs | 25 ++++++++-----------------
> 2 files changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs
> index 45f315aeb..46600a88c 100644
> --- a/pbs-datastore/src/datastore.rs
> +++ b/pbs-datastore/src/datastore.rs
> @@ -2444,4 +2444,13 @@ impl DataStore {
> .context("failed to replace group notes file")?;
> Ok(())
> }
> +
> + /// Delete a backup snapshot from the datastore.
> + /// Acquires exclusive lock on the backup snapshot.
> + pub fn delete_snapshot(self: &Arc<Self>, snapshot: &BackupDir) -> Result<(), Error> {
> + let backend = self.backend().context("failed to get backend")?;
> + // acquires exclusive lock on snapshot before removal
> + snapshot.destroy(false, &backend)?;
> + Ok(())
> + }
> }
> diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs
> index 131cdae51..763440df9 100644
> --- a/src/api2/admin/datastore.rs
> +++ b/src/api2/admin/datastore.rs
> @@ -378,9 +378,9 @@ pub async fn delete_snapshot(
> )?;
>
> let snapshot = datastore.backup_dir(ns, backup_dir)?;
> -
> - snapshot.destroy(false, &datastore.backend()?)?;
> -
> + datastore
> + .delete_snapshot(&snapshot)
> + .map_err(|err| format_err!("failed to delete snapshot - {err:#?}"))?;
> Ok(Value::Null)
> })
> .await?
> @@ -986,21 +986,12 @@ pub fn prune(
> });
>
> if !keep {
> - match datastore.backend() {
> - Ok(backend) => {
> - if let Err(err) = backup_dir.destroy(false, &backend) {
> - warn!(
> - "failed to remove dir {:?}: {}",
> - backup_dir.relative_path(),
> - err,
> - );
> - }
> - }
> - Err(err) => warn!(
> - "failed to remove dir {:?}: {err}",
> + if let Err(err) = datastore.delete_snapshot(backup_dir) {
> + warn!(
> + "failed to remove dir {:?}: {err:#?}",
> backup_dir.relative_path()
> - ),
> - };
> + );
> + }
> }
> }
> prune_result
> --
> 2.47.3
>
>
>
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
>
>
>
More information about the pbs-devel
mailing list