mirror of https://gitee.com/openkylin/libvirt.git
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:
parent
1c5e782caa
commit
1074fc5061
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue