From: Dietmar Maurer Date: Tue, 13 Jun 2017 06:24:20 +0000 (+0200) Subject: PVE::QemuServer::foreach_volid - record snapshot references X-Git-Url: https://git.proxmox.com/?p=qemu-server.git;a=commitdiff_plain;h=39019f75c798b630e30ad2044e28e332ecc23dfd PVE::QemuServer::foreach_volid - record snapshot references So that we can test if a volume is referenced in the main config, and/or inside a snapshot config. --- diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 758b56a..1a4860e 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -2776,7 +2776,7 @@ sub foreach_volid { my $volhash = {}; my $test_volid = sub { - my ($volid, $is_cdrom, $replicate) = @_; + my ($volid, $is_cdrom, $replicate, $snapname) = @_; return if !$volid; @@ -2785,19 +2785,25 @@ sub foreach_volid { $volhash->{$volid}->{replicate} //= 0; $volhash->{$volid}->{replicate} = 1 if $replicate; + + $volhash->{$volid}->{referenced_in_config} //= 0; + $volhash->{$volid}->{referenced_in_config} = 1 if !defined($snapname); + + $volhash->{$volid}->{referenced_in_snapshot}->{$snapname} = 1 + if defined($snapname); }; foreach_drive($conf, sub { my ($ds, $drive) = @_; - &$test_volid($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1); + $test_volid->($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1, undef); }); foreach my $snapname (keys %{$conf->{snapshots}}) { my $snap = $conf->{snapshots}->{$snapname}; - &$test_volid($snap->{vmstate}, 0, 1); + $test_volid->($snap->{vmstate}, 0, 1, $snapname); foreach_drive($snap, sub { my ($ds, $drive) = @_; - &$test_volid($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1); + $test_volid->($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1, $snapname); }); }