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
---
src/qemu/qemu_hotplug.c | 10 ++++++++--
src/qemu/qemu_process.c | 4 ++++
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index ef8696b..ad4e7ab 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -300,8 +300,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;
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 0ccc3ac..4a7c141 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -5555,6 +5555,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;
--
2.8.1