]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: command: Move disk index validation closer to usage
authorPeter Krempa <pkrempa@redhat.com>
Wed, 1 Nov 2017 09:41:55 +0000 (10:41 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 7 Nov 2017 13:29:37 +0000 (14:29 +0100)
The disk index validation is used only in very specific cases and does
not need to be performed otherwise. Move it out of the global check into
the usage place.

src/qemu/qemu_command.c

index 3a41e918aaa139f2e53575a08bb63177f1a2b5a6..58de7632699e8394646064c434bd1c74294ed90f 100644 (file)
@@ -1468,15 +1468,8 @@ qemuBuildDriveSourceStr(virDomainDiskDefPtr disk,
 static int
 qemuBuildDriveStrValidate(virDomainDiskDefPtr disk,
                           virQEMUCapsPtr qemuCaps,
-                          const char *bus,
-                          int idx)
+                          const char *bus)
 {
-    if (idx < 0) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("unsupported disk type '%s'"), disk->dst);
-        return -1;
-    }
-
     switch (disk->bus) {
     case VIR_DOMAIN_DISK_BUS_SCSI:
         if (disk->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) {
@@ -1638,10 +1631,9 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
     const char *bus = virDomainDiskQEMUBusTypeToString(disk->bus);
     const char *trans =
         virDomainDiskGeometryTransTypeToString(disk->geometry.trans);
-    int idx = virDiskNameToIndex(disk->dst);
     bool emitDeviceSyntax = qemuDiskBusNeedsDeviceArg(disk->bus);
 
-    if (qemuBuildDriveStrValidate(disk, qemuCaps, bus, idx) < 0)
+    if (qemuBuildDriveStrValidate(disk, qemuCaps, bus) < 0)
         goto error;
 
     if (qemuBuildDriveSourceStr(disk, cfg, &opt, qemuCaps) < 0)
@@ -1671,6 +1663,13 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
         virBufferAsprintf(&opt, ",id=%s", drivealias);
         VIR_FREE(drivealias);
     } else {
+        int idx = virDiskNameToIndex(disk->dst);
+
+        if (idx < 0) {
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           _("unsupported disk type '%s'"), disk->dst);
+            goto error;
+        }
         virBufferAsprintf(&opt, ",index=%d", idx);
     }
     if (bootable &&