]> git.proxmox.com Git - qemu-server.git/commitdiff
api/restore: do not trigger autostart task from locked context
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 16 Dec 2019 14:56:46 +0000 (15:56 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 16 Dec 2019 14:56:49 +0000 (15:56 +0100)
Do the same as for the "create" case, only trigger the "start after
create/restore" task after the locked "realcmd" was done. Else, the
start can never succeed, it also acquires a lock, but restore only
release it once outside of realcmd.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
PVE/API2/Qemu.pm

index cf9da166ea9a9e19d615c158aaec1f21416ad775..5bae5138177bbb6fa7f8adf6a6d73a558acf2d2b 100644 (file)
@@ -574,17 +574,18 @@ __PACKAGE__->register_method({
                }
 
                PVE::AccessControl::add_vm_to_pool($vmid, $pool) if $pool;
-
-               if ($start_after_create) {
-                   eval { PVE::API2::Qemu->vm_start({ vmid => $vmid, node => $node }) };
-                   warn $@ if $@;
-               }
            };
 
            # ensure no old replication state are exists
            PVE::ReplicationState::delete_guest_states($vmid);
 
-           return PVE::QemuConfig->lock_config_full($vmid, 1, $realcmd);
+           PVE::QemuConfig->lock_config_full($vmid, 1, $realcmd);
+
+           if ($start_after_create) {
+               print "Execute autostart\n";
+               eval { PVE::API2::Qemu->vm_start({ vmid => $vmid, node => $node }) };
+               warn $@ if $@;
+           }
        };
 
        my $createfn = sub {