]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Move bootindex usage logic into qemuBuildDiskDeviceStr
authorPeter Krempa <pkrempa@redhat.com>
Fri, 30 Apr 2021 14:09:09 +0000 (16:09 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 24 May 2021 18:38:08 +0000 (20:38 +0200)
We can skip the formatting of the bootindex for floppies directly at the
place where it's being formatted.

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_command.c
src/qemu/qemu_command.h
src/qemu/qemu_hotplug.c

index 453f24174f01df141e0befb59bdbcb25d2bbaecf..bf031be65e051a71bd02dbf4fed0c6da8b3c45cb 100644 (file)
@@ -1659,9 +1659,9 @@ qemuBuildDriveDevCacheStr(virDomainDiskDef *disk,
 char *
 qemuBuildDiskDeviceStr(const virDomainDef *def,
                        virDomainDiskDef *disk,
-                       unsigned int bootindex,
                        virQEMUCaps *qemuCaps)
 {
+    qemuDomainDiskPrivate *diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
     g_auto(virBuffer) opt = VIR_BUFFER_INITIALIZER;
     const char *contAlias;
     g_autofree char *backendAlias = NULL;
@@ -1876,8 +1876,10 @@ qemuBuildDiskDeviceStr(const virDomainDef *def,
     }
 
     virBufferAsprintf(&opt, ",id=%s", disk->info.alias);
-    if (bootindex)
-        virBufferAsprintf(&opt, ",bootindex=%u", bootindex);
+    /* bootindex for floppies is configured via the fdc controller */
+    if (disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
+        diskPriv->effectiveBootindex > 0)
+        virBufferAsprintf(&opt, ",bootindex=%u", diskPriv->effectiveBootindex);
     if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKIO)) {
         if (disk->blockio.logical_block_size > 0)
             virBufferAsprintf(&opt, ",logical_block_size=%u",
@@ -2164,8 +2166,7 @@ static int
 qemuBuildDiskCommandLine(virCommand *cmd,
                          const virDomainDef *def,
                          virDomainDiskDef *disk,
-                         virQEMUCaps *qemuCaps,
-                         unsigned int bootindex)
+                         virQEMUCaps *qemuCaps)
 {
     g_autofree char *optstr = NULL;
 
@@ -2188,8 +2189,7 @@ qemuBuildDiskCommandLine(virCommand *cmd,
 
     virCommandAddArg(cmd, "-device");
 
-    if (!(optstr = qemuBuildDiskDeviceStr(def, disk, bootindex,
-                                          qemuCaps)))
+    if (!(optstr = qemuBuildDiskDeviceStr(def, disk, qemuCaps)))
         return -1;
     virCommandAddArg(cmd, optstr);
 
@@ -2213,15 +2213,8 @@ qemuBuildDisksCommandLine(virCommand *cmd,
 
     for (i = 0; i < def->ndisks; i++) {
         virDomainDiskDef *disk = def->disks[i];
-        qemuDomainDiskPrivate *diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
-        unsigned int bootindex = 0;
-
-        /* The floppy device itself does not support the bootindex property
-         * so we need to set it up for the controller */
-        if (disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY)
-            bootindex = diskPriv->effectiveBootindex;
 
-        if (qemuBuildDiskCommandLine(cmd, def, disk, qemuCaps, bootindex) < 0)
+        if (qemuBuildDiskCommandLine(cmd, def, disk, qemuCaps) < 0)
             return -1;
     }
 
index 4f1d2bf7554014ed1a70c35ad554a6babe9975a0..188e63ea1fafd022abc2401671d4f4f81687fc17 100644 (file)
@@ -146,7 +146,6 @@ qemuBuildStorageSourceChainAttachPrepareBlockdevTop(virStorageSource *top,
 char
 *qemuBuildDiskDeviceStr(const virDomainDef *def,
                         virDomainDiskDef *disk,
-                        unsigned int bootindex,
                         virQEMUCaps *qemuCaps);
 
 /* Current, best practice */
index c6f275e11d338ba12d2c1b78e555a6eaead99ff7..a37f3dcc683fbba04f7869afb9830cdf5c6d4632 100644 (file)
@@ -734,7 +734,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
             goto cleanup;
     }
 
-    if (!(devstr = qemuBuildDiskDeviceStr(vm->def, disk, 0, priv->qemuCaps)))
+    if (!(devstr = qemuBuildDiskDeviceStr(vm->def, disk, priv->qemuCaps)))
         goto cleanup;
 
     VIR_REALLOC_N(vm->def->disks, vm->def->ndisks + 1);