]> git.proxmox.com Git - qemu-server.git/commitdiff
PVE::QemuServer::foreach_volid - record snapshot references
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 13 Jun 2017 06:24:20 +0000 (08:24 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 13 Jun 2017 07:02:06 +0000 (09:02 +0200)
So that we can test if a volume is referenced in the main config, and/or
inside a snapshot config.

PVE/QemuServer.pm

index 758b56acf18543611f3d74bb18bcff9985704074..1a4860e45a95b6c68a12b89940742f35abedc298 100644 (file)
@@ -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);
         });
     }