]> git.proxmox.com Git - pve-container.git/commitdiff
snapshot_create: unfreeze after snapshot creation
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 12 Jan 2016 06:33:13 +0000 (07:33 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 12 Jan 2016 06:33:13 +0000 (07:33 +0100)
As pointed out by Gerrit Venema. Also make sure to unfreeze in
case of errors (exceptions).

src/PVE/LXC.pm

index 04059075a88bdbc88eeef6bebace5e62c82f1acf..860901f7e5bd6766cc777b6ce3e7e6b62ba41150 100644 (file)
@@ -1785,9 +1785,13 @@ sub snapshot_create {
     my $conf = load_config($vmid);
 
     my $running = check_running($vmid);
+    
+    my $unfreeze = 0;
+    
     eval {
        if ($running) {
            PVE::Tools::run_command(['/usr/bin/lxc-freeze', '-n', $vmid]);
+           $unfreeze = 1;
            PVE::Tools::run_command(['/bin/sync']);
        };
 
@@ -1795,14 +1799,17 @@ sub snapshot_create {
        my $rootinfo = parse_ct_mountpoint($conf->{rootfs});
        my $volid = $rootinfo->{volume};
 
-       if ($running) {
-           PVE::Tools::run_command(['/usr/bin/lxc-unfreeze', '-n', $vmid]);
-       };
-
        PVE::Storage::volume_snapshot($storecfg, $volid, $snapname);
        &$snapshot_commit($vmid, $snapname);
     };
-    if(my $err = $@) {
+    my $err = $@;
+    
+    if ($unfreeze) {
+       eval { PVE::Tools::run_command(['/usr/bin/lxc-unfreeze', '-n', $vmid]); };
+       warn $@ if $@;
+    }
+    
+    if ($err) {
        snapshot_delete($vmid, $snapname, 1);
        die "$err\n";
     }