diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index 8bcc2bf0..3f16bcd3 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -1888,6 +1888,8 @@ __PACKAGE__->register_method({ node => get_standard_option('pve-node'), vmid => get_standard_option('pve-vmid'), skiplock => get_standard_option('skiplock'), + nocheck => { type => 'boolean', optional => 1 }, + }, }, returns => { @@ -1908,14 +1910,16 @@ __PACKAGE__->register_method({ raise_param_exc({ skiplock => "Only root may use this option." }) if $skiplock && $authuser ne 'root@pam'; - die "VM $vmid not running\n" if !PVE::QemuServer::check_running($vmid); + my $nocheck = extract_param($param, 'nocheck'); + + die "VM $vmid not running\n" if !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); + PVE::QemuServer::vm_resume($vmid, $skiplock, $nocheck); return; }; diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index 264a2a76..a1ee10ab 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -584,7 +584,7 @@ sub phase3_cleanup { if ($self->{livemigration}) { # now that config file is move, we can resume vm on target if livemigrate - my $cmd = [@{$self->{rem_ssh}}, 'qm', 'resume', $vmid, '--skiplock']; + my $cmd = [@{$self->{rem_ssh}}, 'qm', 'resume', $vmid, '--skiplock', '--nocheck']; eval{ PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => sub { my $line = shift; diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 33b3a127..047cf977 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -4615,15 +4615,21 @@ sub vm_suspend { } sub vm_resume { - my ($vmid, $skiplock) = @_; + my ($vmid, $skiplock, $nocheck) = @_; lock_config($vmid, sub { - my $conf = load_config($vmid); + if (!$nocheck) { - check_lock($conf) if !($skiplock || ($conf->{lock} && $conf->{lock} eq 'backup')); + my $conf = load_config($vmid); - vm_mon_cmd($vmid, "cont"); + check_lock($conf) if !($skiplock || ($conf->{lock} && $conf->{lock} eq 'backup')); + + vm_mon_cmd($vmid, "cont"); + + } else { + vm_mon_cmd_nocheck($vmid, "cont"); + } }); }