--- further preparation to merge the common code base of LXC and Qemu PVE/QemuServer.pm | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index c199437..3217af5 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -6162,6 +6162,17 @@ sub qga_check_running { return 1; } +sub check_freeze_needed { + my ($vmid, $config, $save_vmstate) = @_; + + my $running = check_running($vmid); + if ($save_vmstate) { + return ($running, $running && $config->{agent} && qga_check_running($vmid)); + } else { + return ($running, 0); + } +} + sub snapshot_create { my ($vmid, $snapname, $save_vmstate, $comment) = @_; @@ -6171,19 +6182,16 @@ sub snapshot_create { my $config = load_config($vmid); - my $running = check_running($vmid); - - my $freezefs = $running && $config->{agent} && qga_check_running($vmid); - $freezefs = 0 if $snap->{vmstate}; # not needed if we save RAM + my ($running, $freezefs) = check_freeze_needed($vmid, $config, $snap->{vmstate}); my $drivehash = {}; - if ($freezefs) { - eval { vm_mon_cmd($vmid, "guest-fsfreeze-freeze"); }; - warn "guest-fsfreeze-freeze problems - $@" if $@; - } - eval { + if ($freezefs) { + eval { vm_mon_cmd($vmid, "guest-fsfreeze-freeze"); }; + warn "guest-fsfreeze-freeze problems - $@" if $@; + } + # create internal snapshots of all drives my $storecfg = PVE::Storage::config(); @@ -6236,7 +6244,7 @@ sub snapshot_create { if ($err) { warn "snapshot create failed: starting cleanup\n"; - eval { snapshot_delete($vmid, $snapname, 0, $drivehash); }; + eval { snapshot_delete($vmid, $snapname, 1, $drivehash); }; warn $@ if $@; die $err; } -- 2.1.4 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel