9c6c51
From b6b3d9d21c2b4a3587c5d85b3fef6c6193730d69 Mon Sep 17 00:00:00 2001
9c6c51
Message-Id: <b6b3d9d21c2b4a3587c5d85b3fef6c6193730d69@dist-git>
9c6c51
From: Peter Krempa <pkrempa@redhat.com>
9c6c51
Date: Fri, 17 Aug 2018 12:05:13 +0200
9c6c51
Subject: [PATCH] qemu: hotplug: Fix asynchronous unplug of 'shmem'
9c6c51
9c6c51
commit 5c81c342a7 forgot to skip the detaching of the shmem backend
9c6c51
when async unplug is requested which meant that we've tried to unplug
9c6c51
the backend prior to delivery of the DEVICE_DELETED event.
9c6c51
9c6c51
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1618622
9c6c51
9c6c51
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
9c6c51
(cherry picked from commit 69c20e1090059d8b359fdd435e8ba50db7269be1)
9c6c51
https: //bugzilla.redhat.com/show_bug.cgi?id=1618680
9c6c51
Reviewed-by: Erik Skultety <eskultet@redhat.com>
9c6c51
---
9c6c51
 src/qemu/qemu_hotplug.c | 11 ++++++++---
9c6c51
 1 file changed, 8 insertions(+), 3 deletions(-)
9c6c51
9c6c51
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
9c6c51
index 053ddb14ec..397a2bdde2 100644
9c6c51
--- a/src/qemu/qemu_hotplug.c
9c6c51
+++ b/src/qemu/qemu_hotplug.c
9c6c51
@@ -5262,11 +5262,16 @@ qemuDomainDetachShmemDevice(virQEMUDriverPtr driver,
9c6c51
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
9c6c51
         goto cleanup;
9c6c51
 
9c6c51
-    if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
9c6c51
-        ret = qemuDomainRemoveShmemDevice(driver, vm, shmem);
9c6c51
+    if (async) {
9c6c51
+        ret = 0;
9c6c51
+    } else {
9c6c51
+        if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
9c6c51
+            ret = qemuDomainRemoveShmemDevice(driver, vm, shmem);
9c6c51
+    }
9c6c51
 
9c6c51
  cleanup:
9c6c51
-    qemuDomainResetDeviceRemoval(vm);
9c6c51
+    if (!async)
9c6c51
+        qemuDomainResetDeviceRemoval(vm);
9c6c51
     return ret;
9c6c51
 }
9c6c51
 
9c6c51
-- 
9c6c51
2.18.0
9c6c51