mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-04 15:00:49 +00:00
change shutdown behaviour on suspended vm
previously, when shutting down a suspended vm, we successfully send the shutdown command to it, but it will not shutdown (because it is suspended) there we will run into the timeout and either bail out with an error, or kill the process when we not kill the process and resume the vm, it will instantly shutdown, because of the previous command this patch checks the status of the vm beforehand, and either bails out with an error that you cannot shutdown a suspended vm, or stops the vm with the correct qmp command (depending of forceStop) Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
c881ad2f2c
commit
8989736707
@ -1818,13 +1818,36 @@ __PACKAGE__->register_method({
|
||||
|
||||
my $storecfg = PVE::Storage::config();
|
||||
|
||||
my $shutdown = 1;
|
||||
|
||||
# if vm is paused, do not shutdown (but stop if forceStop = 1)
|
||||
# otherwise, we will infer a shutdown command, but run into the timeout,
|
||||
# then when the vm is resumed, it will instantly shutdown
|
||||
#
|
||||
# checking the qmp status here to get feedback to the gui/cli/api
|
||||
# and the status query should not take too long
|
||||
my $qmpstatus;
|
||||
eval {
|
||||
$qmpstatus = PVE::QemuServer::vm_qmp_command($vmid, { execute => "query-status" }, 0);
|
||||
};
|
||||
my $err = $@ if $@;
|
||||
|
||||
if (!$err && $qmpstatus->{status} eq "paused") {
|
||||
if ($param->{forceStop}) {
|
||||
warn "VM is paused - stop instead of shutdown\n";
|
||||
$shutdown = 0;
|
||||
} else {
|
||||
die "VM is paused - cannot shutdown\n";
|
||||
}
|
||||
}
|
||||
|
||||
my $realcmd = sub {
|
||||
my $upid = shift;
|
||||
|
||||
syslog('info', "shutdown VM $vmid: $upid\n");
|
||||
|
||||
PVE::QemuServer::vm_stop($storecfg, $vmid, $skiplock, 0, $param->{timeout},
|
||||
1, $param->{forceStop}, $keepActive);
|
||||
$shutdown, $param->{forceStop}, $keepActive);
|
||||
|
||||
return;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user