qemu: refactor qemuBuildControllerDevStr to eliminate future duplicate code

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.
This commit is contained in:
Laine Stump 2015-06-16 15:22:57 -04:00
parent 1c5e782caa
commit 1074fc5061
1 changed files with 12 additions and 15 deletions

View File

@ -4583,13 +4583,20 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
break; break;
case VIR_DOMAIN_CONTROLLER_TYPE_PCI: 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) { switch (def->model) {
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE: 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", virBufferAsprintf(&buf, "pci-bridge,chassis_nr=%d,id=%s",
def->idx, def->info.alias); def->idx, def->info.alias);
break; break;
@ -4600,18 +4607,8 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
"controller is not supported in this QEMU binary")); "controller is not supported in this QEMU binary"));
goto error; 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); virBufferAsprintf(&buf, "i82801b11-bridge,id=%s", def->info.alias);
break; 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; break;