From 2eeb0c932129f0a19cc2138b1b7fdedb1d9d3869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Mon, 15 May 2017 14:11:57 +0200 Subject: [PATCH] snapshot: use explicitly configured vmstate storage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit and simplify storage loop Signed-off-by: Fabian Grünbichler --- PVE/QemuConfig.pm | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/PVE/QemuConfig.pm b/PVE/QemuConfig.pm index e2fa2bab..c1037379 100644 --- a/PVE/QemuConfig.pm +++ b/PVE/QemuConfig.pm @@ -120,29 +120,23 @@ sub __snapshot_save_vmstate { my $snap = $conf->{snapshots}->{$snapname}; - my $target; - - # search shared storage first - PVE::QemuServer::foreach_writable_storage($conf, sub { - my ($sid) = @_; - my $scfg = PVE::Storage::storage_config($storecfg, $sid); - return if !$scfg->{shared}; - - $target = $sid if !$target || $scfg->{path}; # prefer file based storage - }); + # first, use explicitly configured storage + my $target = $conf->{vmstatestorage}; if (!$target) { - # now search local storage + my ($shared, $local); PVE::QemuServer::foreach_writable_storage($conf, sub { my ($sid) = @_; my $scfg = PVE::Storage::storage_config($storecfg, $sid); - return if $scfg->{shared}; - - $target = $sid if !$target || $scfg->{path}; # prefer file based storage; + my $dst = $scfg->{shared} ? \$shared : \$local; + $$dst = $sid if !$$dst || $scfg->{path}; # prefer file based storage }); - } - $target = 'local' if !$target; + # second, use shared storage where VM has at least one disk + # third, use local storage where VM has at least one disk + # fall back to local storage + $target = $shared // $local // 'local'; + } my $driver_state_size = 500; # assume 32MB is enough to safe all driver state; # we abort live save after $conf->{memory}, so we need at max twice that space