]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemuDomainAttachDiskGeneric: Move 'copy-on-read' handling to qemuBlockStorageSourceCh...
authorPeter Krempa <pkrempa@redhat.com>
Fri, 7 May 2021 12:50:23 +0000 (14:50 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 24 May 2021 18:38:08 +0000 (20:38 +0200)
Fill in the required fields in qemuBlockStorageSourceChainData to handle
the hotplug so that we can simplify the cleanup code.

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

index d954ddac1f4e3792fdb881e98d1c08af01fb1011..57906df70f509e712a467a590bbbb300beb23c5b 100644 (file)
@@ -700,9 +700,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
     qemuDomainObjPrivate *priv = vm->privateData;
     g_autofree char *devstr = NULL;
     g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
-    g_autoptr(virJSONValue) corProps = NULL;
-    g_autofree char *corAlias = NULL;
-    bool corAdded = false;
     bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
 
     if (qemuDomainStorageSourceChainAccessAllow(driver, vm, disk->src) < 0)
@@ -718,16 +715,17 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
         if (!(data = qemuBuildStorageSourceChainAttachPrepareChardev(disk)))
             goto cleanup;
     } else if (blockdev) {
+        if (!(data = qemuBuildStorageSourceChainAttachPrepareBlockdev(disk->src,
+                                                                      priv->qemuCaps)))
+            goto cleanup;
+
         if (disk->copy_on_read == VIR_TRISTATE_SWITCH_ON) {
-            if (!(corProps = qemuBlockStorageGetCopyOnReadProps(disk)))
+            if (!(data->copyOnReadProps = qemuBlockStorageGetCopyOnReadProps(disk)))
                 goto cleanup;
 
-            corAlias = g_strdup(QEMU_DOMAIN_DISK_PRIVATE(disk)->nodeCopyOnRead);
+            data->copyOnReadNodename = g_strdup(QEMU_DOMAIN_DISK_PRIVATE(disk)->nodeCopyOnRead);
         }
 
-        if (!(data = qemuBuildStorageSourceChainAttachPrepareBlockdev(disk->src,
-                                                                      priv->qemuCaps)))
-            goto cleanup;
     } else {
         if (!(data = qemuBuildStorageSourceChainAttachPrepareDrive(disk,
                                                                    priv->qemuCaps)))
@@ -746,13 +744,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
     if (qemuBlockStorageSourceChainAttach(priv->mon, data) < 0)
         goto exit_monitor;
 
-    if (corProps) {
-        if (qemuMonitorBlockdevAdd(priv->mon, &corProps) < 0)
-            goto exit_monitor;
-
-        corAdded = true;
-    }
-
     if (qemuDomainAttachExtensionDevice(priv->mon, &disk->info) < 0)
         goto exit_monitor;
 
@@ -793,8 +784,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
     return ret;
 
  exit_monitor:
-    if (corAdded)
-        ignore_value(qemuMonitorBlockdevDel(priv->mon, corAlias));
     qemuBlockStorageSourceChainDetach(priv->mon, data);
 
     if (qemuDomainObjExitMonitor(driver, vm) < 0)