]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: eliminate redundant if clauses in qemuCollectPCIAddress
authorLaine Stump <laine@laine.org>
Tue, 24 Sep 2013 10:49:26 +0000 (06:49 -0400)
committerLaine Stump <laine@laine.org>
Wed, 25 Sep 2013 14:35:49 +0000 (10:35 -0400)
Replace them with switch cases. This will make it more efficient when
we add exceptions for more controller types, and other device types.

This is a prerequisite for patches to resolve:

   https://bugzilla.redhat.com/show_bug.cgi?id=1003983

src/qemu/qemu_command.c

index 037661179833a6f7023b818fdcf5abab713e9f92..2683a9c4ebf1a4a43844e2e610dbc58332179c8d 100644 (file)
@@ -1731,37 +1731,44 @@ qemuCollectPCIAddress(virDomainDefPtr def ATTRIBUTE_UNUSED,
     /* Change flags according to differing requirements of different
      * devices.
      */
-    if (device->type == VIR_DOMAIN_DEVICE_CONTROLLER &&
-        device->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI) {
-        switch (device->data.controller->model) {
-        case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
-            /* pci-bridge needs a PCI slot, but it isn't
-             * hot-pluggable, so it doesn't need a hot-pluggable slot.
-             */
-            flags = QEMU_PCI_CONNECT_TYPE_PCI;
+    switch (device->type) {
+    case VIR_DOMAIN_DEVICE_CONTROLLER:
+        switch (device->data.controller->type) {
+        case  VIR_DOMAIN_CONTROLLER_TYPE_PCI:
+            switch (device->data.controller->model) {
+            case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
+                /* pci-bridge needs a PCI slot, but it isn't
+                 * hot-pluggable, so it doesn't need a hot-pluggable slot.
+                 */
+                flags = QEMU_PCI_CONNECT_TYPE_PCI;
+                break;
+            case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
+                /* pci-bridge needs a PCIe slot, but it isn't
+                 * hot-pluggable, so it doesn't need a hot-pluggable slot.
+                 */
+                flags = QEMU_PCI_CONNECT_TYPE_PCIE;
+                break;
+            default:
+                break;
+            }
             break;
-        case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
-            /* pci-bridge needs a PCIe slot, but it isn't
-             * hot-pluggable, so it doesn't need a hot-pluggable slot.
+
+        case VIR_DOMAIN_CONTROLLER_TYPE_SATA:
+            /* SATA controllers aren't hot-plugged, and can be put in
+             * either a PCI or PCIe slot
              */
-            flags = QEMU_PCI_CONNECT_TYPE_PCIE;
-            break;
-        default:
+            flags = QEMU_PCI_CONNECT_TYPE_PCI | QEMU_PCI_CONNECT_TYPE_PCIE;
             break;
         }
-    }
-    /* SATA controllers aren't hot-plugged, and can be put in either a
-     * PCI or PCIe slot
-     */
-    if (device->type == VIR_DOMAIN_DEVICE_CONTROLLER &&
-        device->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_SATA)
-        flags = QEMU_PCI_CONNECT_TYPE_PCI | QEMU_PCI_CONNECT_TYPE_PCIE;
+        break;
 
-    /* video cards aren't hot-plugged, and can be put in either a PCI
-     * or PCIe slot
-     */
-    if (device->type == VIR_DOMAIN_DEVICE_VIDEO)
+    case VIR_DOMAIN_DEVICE_VIDEO:
+        /* video cards aren't hot-plugged, and can be put in either a
+         * PCI or PCIe slot
+         */
         flags = QEMU_PCI_CONNECT_TYPE_PCI | QEMU_PCI_CONNECT_TYPE_PCIE;
+        break;
+    }
 
     /* Ignore implicit controllers on slot 0:0:1.0:
      * implicit IDE controller on 0:0:1.1 (no qemu command line)