Sometimes, a user wants to remove the 'suspended' state without resuming the vm from that state. Since the vm is locked with 'suspended', this was not possible without help from root@pam
This patch allows to delete the vmstate and the suspended lock and related config entries with it. The user still has to have the right priviliges and the vm cannot be 'protected' for this to work also, the lock will only be skipped, if the deletion of the vmstate is the only thing that is done Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- PVE/API2/Qemu.pm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index a466121..d3fbbfd 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -1091,7 +1091,20 @@ my $update_vm_api = sub { die "checksum missmatch (file change by other user?)\n" if $digest && $digest ne $conf->{digest}; - PVE::QemuConfig->check_lock($conf) if !$skiplock; + my $clear_suspend = 0; + # special case for removing vmstate + # if the only thing we want to delete is the vmstate, we skip the + #'suspended' lock and remove it as well as the running machine and vmstate + if (scalar(@delete) == 1 && $delete[0] eq 'vmstate' && + !scalar(keys %$param) && !scalar(keys %$revert) && + defined($conf->{lock}) && $conf->{lock} eq 'suspended') + { + $clear_suspend = 1; + push @delete, 'lock'; + push @delete, 'runningmachine' if $conf->{runningmachine}; + } + + PVE::QemuConfig->check_lock($conf) if !$skiplock && !$clear_suspend; foreach my $opt (keys %$revert) { if (defined($conf->{$opt})) { -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel