From: Thomas Lamprecht Date: Tue, 19 Mar 2019 11:57:08 +0000 (+0100) Subject: api/resume: allow to resume 'to-disk suspended' VMs X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=cd9a035b56db253de461c3dbc29f2b4f43fb7739;p=qemu-server.git api/resume: allow to resume 'to-disk suspended' VMs Signed-off-by: Thomas Lamprecht Cc: Dominik Csapak Reviewed-by: Dominik Csapak Tested-by: Dominik CSapak --- diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index 3c0ad239..99e37d87 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -2444,14 +2444,28 @@ __PACKAGE__->register_method({ my $nocheck = extract_param($param, 'nocheck'); - die "VM $vmid not running\n" if !PVE::QemuServer::check_running($vmid, $nocheck); + my $to_disk_suspended; + eval { + PVE::QemuConfig->lock_config($vmid, sub { + my $conf = PVE::QemuConfig->load_config($vmid); + $to_disk_suspended = PVE::QemuConfig->has_lock($conf, 'suspended'); + }); + }; + + die "VM $vmid not running\n" + if !$to_disk_suspended && !PVE::QemuServer::check_running($vmid, $nocheck); my $realcmd = sub { my $upid = shift; syslog('info', "resume VM $vmid: $upid\n"); - PVE::QemuServer::vm_resume($vmid, $skiplock, $nocheck); + if (!$to_disk_suspended) { + PVE::QemuServer::vm_resume($vmid, $skiplock, $nocheck); + } else { + my $storecfg = PVE::Storage::config(); + PVE::QemuServer::vm_start($storecfg, $vmid, undef, $skiplock); + } return; };