]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Update domain state to pmsuspended while suspend event occurs
authorOsier Yang <jyang@redhat.com>
Wed, 14 Mar 2012 15:26:54 +0000 (23:26 +0800)
committerOsier Yang <jyang@redhat.com>
Fri, 23 Mar 2012 15:12:26 +0000 (23:12 +0800)
src/qemu/qemu_process.c

index 37a786c1f7499546fdf386d97a0b64738dd7812a..2e873ecb8fe1c82ce58bad3f1fdd7944f777bdea 100644 (file)
@@ -1092,6 +1092,19 @@ qemuProcessHandlePMSuspend(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
     virDomainObjLock(vm);
     event = virDomainEventPMSuspendNewFromObj(vm);
 
+    if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) {
+        VIR_DEBUG("Transitioned guest %s to pmsuspended state due to "
+                  "QMP suspend event", vm->def->name);
+
+        virDomainObjSetState(vm, VIR_DOMAIN_PMSUSPENDED,
+                             VIR_DOMAIN_PMSUSPENDED_UNKNOWN);
+
+        if (virDomainSaveStatus(driver->caps, driver->stateDir, vm) < 0) {
+            VIR_WARN("Unable to save status on vm %s after suspend event",
+                     vm->def->name);
+        }
+    }
+
     virDomainObjUnlock(vm);
 
     if (event) {