]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: hotplug: Remove rest of source backend if hotplug fails
authorPeter Krempa <pkrempa@redhat.com>
Thu, 28 Mar 2019 14:59:38 +0000 (15:59 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 26 Jun 2019 06:59:37 +0000 (08:59 +0200)
When changing media using blockdev-add we need to remove the leftovers
if we didn't succeed plugging in the full chain or closing the tray.
Otherwise the data structures will be freed and thus the backing chain
members will never be unplugged.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_hotplug.c

index 79548ddf734a4fc9df43541702f611da63bd5862..08eb9c3d470a1fc5a041dfce8276f7ca79c3c3bf 100644 (file)
@@ -491,6 +491,9 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver,
     if (rc == 0)
         rc = qemuMonitorBlockdevTrayClose(priv->mon, diskPriv->qomName);
 
+    if (rc < 0 && newbackend)
+        qemuBlockStorageSourceChainDetach(priv->mon, newbackend);
+
     if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0)
         goto cleanup;