]> git.proxmox.com Git - proxmox-backup.git/blobdiff - src/api2/backup.rs
src/api2/backup.rs: aquire backup lock earlier in create_locked_backup_group()
[proxmox-backup.git] / src / api2 / backup.rs
index b9dff1fcc12791fc1b0cbe2fdf48264259d45a7b..ad13faa5dba0687516e5b64daa8472f2771a9fe8 100644 (file)
@@ -88,7 +88,10 @@ async move {
     let env_type = rpcenv.env_type();
 
     let backup_group = BackupGroup::new(backup_type, backup_id);
-    let owner = datastore.create_backup_group(&backup_group, &username)?;
+
+    // lock backup group to only allow one backup per group at a time
+    let (owner, _group_guard) = datastore.create_locked_backup_group(&backup_group, &username)?;
+
     // permission check
     if owner != username { // only the owner is allowed to create additional snapshots
         bail!("backup owner check failed ({} != {})", username, owner);
@@ -103,9 +106,6 @@ async move {
         }
     }
 
-    // lock backup group to only allow one backup per group at a time
-    let _group_guard = backup_group.lock(&datastore.base_path())?;
-
     let (path, is_new) = datastore.create_backup_dir(&backup_dir)?;
     if !is_new { bail!("backup directory already exists."); }