]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Update tray status while tray moved event is emitted
authorOsier Yang <jyang@redhat.com>
Wed, 14 Mar 2012 15:26:50 +0000 (23:26 +0800)
committerOsier Yang <jyang@redhat.com>
Fri, 23 Mar 2012 15:12:09 +0000 (23:12 +0800)
With this patch, libvirt won't start the guest with the medium
source which already ejected by guest when doing migration, or
saving/restoring.

src/qemu/qemu_process.c

index 3c785ce055a276e8088be2309dd28ed6881ef8eb..9d61277cc3898e04a44765c84ea7bd847ecd0215 100644 (file)
@@ -1038,6 +1038,16 @@ qemuProcessHandleTrayChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
         event = virDomainEventTrayChangeNewFromObj(vm,
                                                    devAlias,
                                                    reason);
+        /* Update disk tray status */
+        if (reason == VIR_DOMAIN_EVENT_TRAY_CHANGE_OPEN)
+            disk->tray_status = VIR_DOMAIN_DISK_TRAY_OPEN;
+        else if (reason == VIR_DOMAIN_EVENT_TRAY_CHANGE_CLOSE)
+            disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED;
+
+        if (virDomainSaveStatus(driver->caps, driver->stateDir, vm) < 0) {
+            VIR_WARN("Unable to save status on vm %s after tray moved event",
+                     vm->def->name);
+        }
     }
 
     virDomainObjUnlock(vm);