From 0c97024d35f5d98170c3052710503431f782dffc Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Mon, 16 Dec 2019 15:56:46 +0100 Subject: [PATCH] api/restore: do not trigger autostart task from locked context 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 --- PVE/API2/Qemu.pm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index cf9da166..5bae5138 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -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 {