53 lines
1.9 KiB
Diff
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;
|