]> git.proxmox.com Git - pve-container.git/commitdiff
Don't hold flock for whole backup operation
authorFabian Grünbichler <f.gruenbichler@proxmox.com>
Tue, 19 Jan 2016 12:47:24 +0000 (13:47 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 19 Jan 2016 15:36:31 +0000 (16:36 +0100)
Instead of holding the flock for the whole backup operation,
release it at the end of prepare(), and use
lock_container() to remove a potential 'backup' lock
from the config file when the backup is finished.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
src/PVE/VZDump/LXC.pm

index 1ed65476b96a7d414ce537c5ff40ae55d36393c3..e2ed7b69e55fb6c6c5c8dfc331aeb1a322bbeb39 100644 (file)
@@ -167,12 +167,14 @@ sub prepare {
        $task->{snapshot_count} = scalar(@$volid_list);
     } elsif ($mode eq 'stop') {
        &$lockconfig($self, $vmid);
+
        my $rootdir = $default_mount_point;
        mkpath $rootdir;
        &$check_mountpoint_empty($rootdir);
        PVE::Storage::activate_volumes($storage_cfg, $volid_list);
     } elsif ($mode eq 'suspend') {
        &$lockconfig($self, $vmid);
+
        my $pid = PVE::LXC::find_lxc_pid($vmid);
        foreach my $disk (@$disks) {
            $disk->{dir} = "/proc/$pid/root$disk->{mp}";
@@ -182,6 +184,8 @@ sub prepare {
        die "unknown mode '$mode'\n"; # should not happen
     }
 
+    PVE::LXC::lock_release($vmid);
+
     if ($mode ne 'suspend') {
        # If we perform mount operations, let's unshare the mount namespace
        # to not influence the running host.
@@ -192,16 +196,12 @@ sub prepare {
 
 sub lock_vm {
     my ($self, $vmid) = @_;
-
     PVE::LXC::lock_aquire($vmid);
 }
 
 sub unlock_vm {
     my ($self, $vmid) = @_;
-
-    &$unlockconfig($self, $vmid);
-
-    PVE::LXC::lock_release($vmid);
+    PVE::LXC::lock_container($vmid, 60, $unlockconfig, ($self, $vmid));
 }
 
 sub snapshot {