]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Set fake reboot flag only in acpi mode for shutdown
authorNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Thu, 14 Jul 2016 11:08:22 +0000 (14:08 +0300)
committerJohn Ferlan <jferlan@redhat.com>
Tue, 2 Aug 2016 13:28:32 +0000 (09:28 -0400)
Conditional setting of the fake reboot flag should only happen for
the acpi mode shutdown path; however, for the agent mode shutdown,
the fake reboot should be cleared. This patch will essentially revert
commit id '8be502fd', but adds an explicit setting of the flag to false
when using mode=agent while also only conditionally setting the reboot
flag if the guest went away. This also avoids an issue where a shutdown
with reboot semantics is done from agent mode which sets the reboot
flag followed by a shutdown from within the guest which would result
in a reboot due to the fake reboot flag being set. The change will
also properly handle the cases described in the following archive post:

  https://www.redhat.com/archives/libvir-list/2015-April/msg00715.html

src/qemu/qemu_driver.c

index 2250d376c622252311c695e650c26a97671c6492..ec6c1e60c4e586fd4d234690112170571b798bf3 100644 (file)
@@ -1997,9 +1997,9 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags)
         useAgent = false;
     }
 
-    qemuDomainSetFakeReboot(driver, vm, isReboot);
 
     if (useAgent) {
+        qemuDomainSetFakeReboot(driver, vm, false);
         qemuDomainObjEnterAgent(vm);
         ret = qemuAgentShutdown(priv->agent, agentFlag);
         qemuDomainObjExitAgent(vm);
@@ -2018,6 +2018,7 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags)
             goto endjob;
         }
 
+        qemuDomainSetFakeReboot(driver, vm, isReboot);
         qemuDomainObjEnterMonitor(driver, vm);
         ret = qemuMonitorSystemPowerdown(priv->mon);
         if (qemuDomainObjExitMonitor(driver, vm) < 0)