diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index 0787074d..066726dc 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -2853,11 +2853,6 @@ __PACKAGE__->register_method({ type => 'boolean', description => "Save the vmstate", }, - freezefs => { - optional => 1, - type => 'boolean', - description => "Freeze the filesystem", - }, description => { optional => 1, type => 'string', @@ -2887,8 +2882,8 @@ __PACKAGE__->register_method({ my $realcmd = sub { PVE::Cluster::log_msg('info', $authuser, "snapshot VM $vmid: $snapname"); - PVE::QemuServer::snapshot_create($vmid, $snapname, $param->{vmstate}, - $param->{freezefs}, $param->{description}); + PVE::QemuServer::snapshot_create($vmid, $snapname, $param->{vmstate}, + $param->{description}); }; return $rpcenv->fork_worker('qmsnapshot', $vmid, $authuser, $realcmd); diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index eb15f9cf..5a409445 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -4876,19 +4876,22 @@ my $savevm_wait = sub { }; sub snapshot_create { - my ($vmid, $snapname, $save_vmstate, $freezefs, $comment) = @_; + my ($vmid, $snapname, $save_vmstate, $comment) = @_; my $snap = &$snapshot_prepare($vmid, $snapname, $save_vmstate, $comment); - $freezefs = $save_vmstate = 0 if !$snap->{vmstate}; # vm is not running - - my $drivehash = {}; - - my $running = check_running($vmid); + $save_vmstate = 0 if !$snap->{vmstate}; # vm is not running my $config = load_config($vmid); - if ($running && $freezefs && $config->{agent}) { + my $running = check_running($vmid); + + my $freezefs = $running && $config->{agent}; + $freezefs = 0 if $snap->{vmstate}; # not needed if we save RAM + + my $drivehash = {}; + + if ($freezefs) { eval { vm_mon_cmd($vmid, "guest-fsfreeze-freeze"); }; warn "guest-fsfreeze-freeze problems - $@" if $@; } @@ -4926,7 +4929,7 @@ sub snapshot_create { eval { vm_mon_cmd($vmid, "savevm-end") }; warn $@ if $@; - if ($freezefs && $config->{agent}) { + if ($freezefs) { eval { vm_mon_cmd($vmid, "guest-fsfreeze-thaw"); }; warn "guest-fsfreeze-thaw problems - $@" if $@; }