mirror of
https://git.proxmox.com/git/pve-common
synced 2025-08-03 10:29:04 +00:00
set 'snapshot-delete' lock when deleting snapshot
unless we are in cleanup mode from a failed snapshot_create, in which case the config already has a 'snapshot' lock. this is necessary to prevent concurrent starting of or other actions on the guest in the windows inbetween holding the flock, e.g. when removing the volume snapshot (which can take a bit of time). Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
parent
4eff045b05
commit
0037d63436
@ -468,6 +468,9 @@ sub snapshot_delete {
|
||||
my $snap;
|
||||
my $unused = [];
|
||||
|
||||
$class->set_lock($vmid, 'snapshot-delete')
|
||||
if (!$drivehash); # doesn't already have a 'snapshot' lock
|
||||
|
||||
my $unlink_parent = sub {
|
||||
my ($confref, $new_parent) = @_;
|
||||
|
||||
@ -486,7 +489,6 @@ sub snapshot_delete {
|
||||
my $conf = $class->load_config($vmid);
|
||||
|
||||
if (!$drivehash) {
|
||||
$class->check_lock($conf);
|
||||
die "you can't delete a snapshot if vm is a template\n"
|
||||
if $class->is_template($conf);
|
||||
}
|
||||
@ -512,7 +514,7 @@ sub snapshot_delete {
|
||||
$snap->{snapstate} = 'delete';
|
||||
} else {
|
||||
delete $conf->{snapshots}->{$snapname};
|
||||
delete $conf->{lock} if $drivehash;
|
||||
delete $conf->{lock};
|
||||
foreach my $volid (@$unused) {
|
||||
$class->add_unused_volume($conf, $volid);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user