]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: command: Refactor logic when formatting -drive
authorPeter Krempa <pkrempa@redhat.com>
Tue, 14 Nov 2017 13:13:01 +0000 (14:13 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 22 Nov 2017 19:37:36 +0000 (20:37 +0100)
Move all logic depending on whether we are solely formatting -drive (no
-device along with it) into one block.

src/qemu/qemu_command.c

index b53faadc155d201ba742032df04e9896f9a9e1bc..36b8f3cb7fd20062b817731604bd47ef39b90ad9 100644 (file)
@@ -1657,26 +1657,16 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
                   virQEMUCapsPtr qemuCaps)
 {
     virBuffer opt = VIR_BUFFER_INITIALIZER;
-    bool emitDeviceSyntax = qemuDiskBusNeedsDeviceArg(disk->bus);
-
-    /* if we are using -device this will be checked elsewhere */
-    if (!emitDeviceSyntax &&
-        qemuCheckDiskConfig(disk, qemuCaps) < 0)
-        goto error;
 
     if (qemuBuildDriveSourceStr(disk, cfg, &opt, qemuCaps) < 0)
         goto error;
 
-    if (emitDeviceSyntax)
-        virBufferAddLit(&opt, "if=none");
-    else
-        virBufferAsprintf(&opt, "if=%s",
-                          virDomainDiskQEMUBusTypeToString(disk->bus));
-
-    if (emitDeviceSyntax) {
+    if (qemuDiskBusNeedsDeviceArg(disk->bus)) {
         char *drivealias = qemuAliasFromDisk(disk);
         if (!drivealias)
             goto error;
+
+        virBufferAddLit(&opt, "if=none");
         virBufferAsprintf(&opt, ",id=%s", drivealias);
         VIR_FREE(drivealias);
     } else {
@@ -1687,6 +1677,13 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
                            _("unsupported disk type '%s'"), disk->dst);
             goto error;
         }
+
+        /* if we are using -device this will be checked elsewhere */
+        if (qemuCheckDiskConfig(disk, qemuCaps) < 0)
+            goto error;
+
+        virBufferAsprintf(&opt, "if=%s",
+                          virDomainDiskQEMUBusTypeToString(disk->bus));
         virBufferAsprintf(&opt, ",index=%d", idx);
     }