libvirt/0106-qemu-process-Refresh-e...

53 lines
1.9 KiB
Diff

From: Peter Krempa <pkrempa@redhat.com>
Date: Fri, 29 Apr 2016 13:38:51 +0200
Subject: [PATCH] qemu: process: Refresh ejectable media tray state on VM start
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 | 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 67fb624..b8ab068 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -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;
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index e3df265..2698178 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -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;