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