snapshot_delete: save changes after each drive snapshot removal

This commit is contained in:
Dietmar Maurer 2012-09-12 08:58:33 +02:00
parent 3ee28e388a
commit 2009f324ac

View File

@ -3806,6 +3806,7 @@ sub snapshot_delete {
my $unused = []; my $unused = [];
my $updatefn = sub { my $updatefn = sub {
my ($remove_drive) = @_;
my $conf = load_config($vmid); my $conf = load_config($vmid);
@ -3828,6 +3829,13 @@ sub snapshot_delete {
} }
} }
if ($remove_drive) {
my $drive = parse_drive($remove_drive, $snap->{$remove_drive});
my $volid = $drive->{file};
delete $snap->{$remove_drive};
add_unused_volume($conf, $volid);
}
if ($prepare) { if ($prepare) {
$snap->{snapstate} = 'delete'; $snap->{snapstate} = 'delete';
} else { } else {
@ -3852,16 +3860,20 @@ sub snapshot_delete {
my ($ds, $drive) = @_; my ($ds, $drive) = @_;
return if drive_is_cdrom($drive); return if drive_is_cdrom($drive);
return if $drivehash && !$drivehash->{$ds};
my $volid = $drive->{file}; my $volid = $drive->{file};
my $device = "drive-$ds"; my $device = "drive-$ds";
eval { qemu_volume_snapshot_delete($vmid, $device, $storecfg, $volid, $snapname); }; if (!$drivehash || $drivehash->{$ds}) {
if (my $err = $@) { eval { qemu_volume_snapshot_delete($vmid, $device, $storecfg, $volid, $snapname); };
die $err if !$force; if (my $err = $@) {
warn $err; die $err if !$force;
warn $err;
}
} }
# save changes (remove drive fron snapshot)
lock_config($vmid, $updatefn, $ds) if !$force;
push @$unused, $volid; push @$unused, $volid;
}); });