From 1074fc5061ad7ca41fb9a89f63bdc2bcef88d0e1 Mon Sep 17 00:00:00 2001 From: Laine Stump Date: Tue, 16 Jun 2015 15:22:57 -0400 Subject: [PATCH] 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. --- src/qemu/qemu_command.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3c2c718d9a..ac00d986e4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -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; -- GitLab