eval {
my $volhash = {};
- my $cdromhash = {};
my $sharedvm = 1;
if ($is_cdrom) {
die "can't migrate local cdrom drive\n" if $volid eq 'cdrom';
return if $volid eq 'none';
- $cdromhash->{$volid} = 1;
}
my ($sid, $volname) = PVE::Storage::parse_volume_id($volid);
$sharedvm = 0;
- die "can't migrate local cdrom '$volid'\n" if $cdromhash->{$volid};
+ die "can't migrate local cdrom '$volid'\n" if $is_cdrom;
my ($path, $owner) = PVE::Storage::path($self->{storecfg}, $volid);
}
};
- PVE::QemuServer::foreach_volid($conf, $test_volid);
+ my $test_drive = sub {
+ my ($ds, $drive, $snapname) = @_;
+
+ &$test_volid($drive->{file}, PVE::QemuServer::drive_is_cdrom($drive), $snapname);
+ };
+
+ PVE::QemuServer::foreach_drive($conf, $test_drive);
foreach my $snapname (keys %{$conf->{snapshots}}) {
- PVE::QemuServer::foreach_volid($conf->{snapshots}->{$snapname}, $test_volid, $snapname);
+ &$test_volid($conf->{snapshots}->{$snapname}->{'vmstate'}, 0, undef)
+ if defined($conf->{snapshots}->{$snapname}->{'vmstate'});
+ PVE::QemuServer::foreach_drive($conf->{snapshots}->{$snapname}, $test_drive, $snapname);
}
if ($self->{running} && !$sharedvm) {