]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_process: continue to process fakereboot after restarting libvirtd
authorBihong Yu <yubihong@huawei.com>
Mon, 25 Oct 2021 09:04:55 +0000 (17:04 +0800)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 10 Nov 2021 13:30:10 +0000 (14:30 +0100)
During the vm rebooting, the vm could be paused if the libvirtd is
restarted for some reason, which is not expected. We need continue
fakereboot process if fakereboot flags is true and the vm is in
paused-user status.

Signed-off-by: Bihong Yu <yubihong@huawei.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_process.c

index be75e4d8eb41c4fb49e3f4dec2e19cab10642d5a..173b7d64a4a42ae47cd04ca2caa01d8f343407cc 100644 (file)
@@ -8732,13 +8732,15 @@ qemuProcessReconnect(void *opaque)
         goto error;
     }
 
-    /* In case the domain shutdown while we were not running,
-     * we need to finish the shutdown process. And we need to do it after
-     * we have virQEMUCaps filled in.
+    /* In case the domain shutdown or fake reboot while we were not running,
+     * we need to finish the shutdown or fake reboot process. And we need to
+     * do it after we have virQEMUCaps filled in.
      */
     if (state == VIR_DOMAIN_SHUTDOWN ||
         (state == VIR_DOMAIN_PAUSED &&
-         reason == VIR_DOMAIN_PAUSED_SHUTTING_DOWN)) {
+         reason == VIR_DOMAIN_PAUSED_SHUTTING_DOWN) ||
+        (priv->fakeReboot && state == VIR_DOMAIN_PAUSED &&
+         reason == VIR_DOMAIN_PAUSED_USER)) {
         VIR_DEBUG("Finishing shutdown sequence for domain %s",
                   obj->def->name);
         qemuProcessShutdownOrReboot(driver, obj);