]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: refactor qemuBuildControllerDevStr to eliminate future duplicate code
authorLaine Stump <laine@laine.org>
Tue, 16 Jun 2015 19:22:57 +0000 (15:22 -0400)
committerLaine Stump <laine@laine.org>
Fri, 26 Jun 2015 17:45:40 +0000 (13:45 -0400)
The PCI case of the switch statement in this function contains another
switch statement with a case for each model. Currently every model
except pci-root and pcie-root has a check for index > 0 (since only
those two can have index==0), and the function should never be called
for those two anyway. If we move the check for !pci[e]-root to the top
of the pci case, then we can move the check for index > 0 out of the
individual model cases. This will save repeating that check for the
three new controller models about to be added.

src/qemu/qemu_command.c

index 3c2c718d9a70b41d0027c1e64fc82b1a81fbbee2..ac00d986e43fad45ecc219ec814d345f6916ce3e 100644 (file)
@@ -4583,13 +4583,20 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
         break;
 
     case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
+        if (def->model == VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT ||
+            def->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT) {
+            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                           _("wrong function called for pci-root/pcie-root"));
+            return NULL;
+        }
+        if (def->idx == 0) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("index for pci controllers of model '%s' must be > 0"),
+                           virDomainControllerModelPCITypeToString(def->model));
+            goto error;
+        }
         switch (def->model) {
         case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
-            if (def->idx == 0) {
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                               _("PCI bridge index should be > 0"));
-                goto error;
-            }
             virBufferAsprintf(&buf, "pci-bridge,chassis_nr=%d,id=%s",
                               def->idx, def->info.alias);
             break;
@@ -4600,18 +4607,8 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
                                  "controller is not supported in this QEMU binary"));
                 goto error;
             }
-            if (def->idx == 0) {
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                               _("dmi-to-pci-bridge index should be > 0"));
-                goto error;
-            }
             virBufferAsprintf(&buf, "i82801b11-bridge,id=%s", def->info.alias);
             break;
-        case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
-        case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
-            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                           _("wrong function called for pci-root/pcie-root"));
-            return NULL;
         }
         break;