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 <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2019-12-16 15:56:46 +01:00
parent ae200950d4
commit 0c97024d35

View 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 {