]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: process: Refresh ejectable media tray state on VM start
authorPeter Krempa <pkrempa@redhat.com>
Fri, 29 Apr 2016 11:38:51 +0000 (13:38 +0200)
committerCole Robinson <crobinso@redhat.com>
Thu, 23 Jun 2016 19:43:02 +0000 (15:43 -0400)
Empty floppy drives start with tray in "open" state and libvirt did not
refresh it after startup. The code that inserts media into the tray then
waited until the tray was open before inserting the media and thus
floppies could not be inserted.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1326660
(cherry picked from commit a34faf33011c5c0d7b47ee0849bf1e11635e17c5)

src/qemu/qemu_hotplug.c
src/qemu/qemu_process.c

index 67fb6240e6de18690b83942b8d55f07c15566009..b8ab068bc459a2a4140f22e96938521de1476c77 100644 (file)
@@ -299,8 +299,14 @@ qemuDomainCheckEjectableMedia(virQEMUDriverPtr driver,
         if (!info)
             goto cleanup;
 
-        if (info->tray_open && virDomainDiskGetSource(disk))
-            ignore_value(virDomainDiskSetSource(disk, NULL));
+        if (info->tray_open) {
+            if (virDomainDiskGetSource(disk))
+                ignore_value(virDomainDiskSetSource(disk, NULL));
+
+            disk->tray_status = VIR_DOMAIN_DISK_TRAY_OPEN;
+        } else {
+            disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED;
+        }
     }
 
     ret = 0;
index e3df26563cc149120dad09248cbd4f8b9a5f00ec..2698178e3d247c8c4627b7c1aec221c51cd62d6e 100644 (file)
@@ -5457,6 +5457,10 @@ qemuProcessLaunch(virConnectPtr conn,
     if (qemuProcessUpdateVideoRamSize(driver, vm, asyncJob) < 0)
         goto cleanup;
 
+    VIR_DEBUG("Updating ejectable media status");
+    if (qemuDomainCheckEjectableMedia(driver, vm, asyncJob) < 0)
+        goto cleanup;
+
     if (flags & VIR_QEMU_PROCESS_START_AUTODESTROY &&
         qemuProcessAutoDestroyAdd(driver, vm, conn) < 0)
         goto cleanup;