]> git.proxmox.com Git - qemu-server.git/commitdiff
set resume parameter for vm_start_nolock if there is a vmstate
authorFabian Ebner <f.ebner@proxmox.com>
Tue, 7 Jul 2020 08:20:03 +0000 (10:20 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 13 Jul 2020 10:29:59 +0000 (12:29 +0200)
In config_to_command, '-loadstate' will be added whenever there is a
vmstate in the config. But in vm_start_nolock, the resume parameter
is used to calculate the appropriate timeout and to remove the vmstate
after the start. The resume parameter was only set if there is a
'suspended' lock, but apparently [0] we cannot rely on the lock to be
set if and only if there is a vmstate.

[0]: https://forum.proxmox.com/threads/task-error-start-failed.72450

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
PVE/QemuServer.pm

index 86e10be87bcbed383984ab0231b71b582c5229e1..809124c38a02908efd300ca24eae5eaea6c02df6 100644 (file)
@@ -4782,10 +4782,12 @@ sub vm_start {
 
        die "you can't start a vm if it's a template\n" if PVE::QemuConfig->is_template($conf);
 
-       $params->{resume} = PVE::QemuConfig->has_lock($conf, 'suspended');
+       my $has_suspended_lock = PVE::QemuConfig->has_lock($conf, 'suspended');
 
        PVE::QemuConfig->check_lock($conf)
-           if !($params->{skiplock} || $params->{resume});
+           if !($params->{skiplock} || $has_suspended_lock);
+
+       $params->{resume} = $has_suspended_lock || defined($conf->{vmstate});
 
        die "VM $vmid already running\n" if check_running($vmid, undef, $migrate_opts->{migratedfrom});