[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