提交 4d7f9bf0 编写于 作者: J John Ferlan

qemu: Move PCI command modelName check to controller def validate

Move the various modelName == NAME_NONE from the command line
generation into domain controller validation.  Also rather than
have multiple cases with the same check, let's make the code
more generic, but also note that it was the modelName option
that caused the failure. We also have to be sure not to check
the PCI models that we don't care about.

For the remaining checks in command line building, we can use
the field name in the error message to be more specific about
what causes the failure.
上级 c44ba1d4
...@@ -2716,9 +2716,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2716,9 +2716,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
switch ((virDomainControllerModelPCI) def->model) { switch ((virDomainControllerModelPCI) def->model) {
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
if (pciopts->modelName if (pciopts->chassisNr == -1) {
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
pciopts->chassisNr == -1) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("autogenerated pci-bridge options not set")); _("autogenerated pci-bridge options not set"));
goto error; goto error;
...@@ -2750,9 +2748,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2750,9 +2748,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
def->info.alias); def->info.alias);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
if (pciopts->modelName if (pciopts->busNr == -1) {
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
pciopts->busNr == -1) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("autogenerated pci-expander-bus options not set")); _("autogenerated pci-expander-bus options not set"));
goto error; goto error;
...@@ -2787,13 +2783,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2787,13 +2783,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
pciopts->numaNode); pciopts->numaNode);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE: case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
if (pciopts->modelName
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("autogenerated dmi-to-pci-bridge options not set"));
goto error;
}
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName); modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) { if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
...@@ -2818,9 +2807,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2818,9 +2807,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
virBufferAsprintf(&buf, "%s,id=%s", modelName, def->info.alias); virBufferAsprintf(&buf, "%s,id=%s", modelName, def->info.alias);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
if (pciopts->modelName if (pciopts->chassis == -1 || pciopts->port == -1) {
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
pciopts->chassis == -1 || pciopts->port == -1) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("autogenerated pcie-root-port options not set")); _("autogenerated pcie-root-port options not set"));
goto error; goto error;
...@@ -2864,12 +2851,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2864,12 +2851,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
pciopts->chassis, def->info.alias); pciopts->chassis, def->info.alias);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
if (pciopts->modelName
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("autogenerated pcie-switch-upstream-port options not set"));
goto error;
}
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName); modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) { if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
...@@ -2895,9 +2876,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2895,9 +2876,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
virBufferAsprintf(&buf, "%s,id=%s", modelName, def->info.alias); virBufferAsprintf(&buf, "%s,id=%s", modelName, def->info.alias);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
if (pciopts->modelName if (pciopts->chassis == -1 ||
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
pciopts->chassis == -1 ||
pciopts->port == -1) { pciopts->port == -1) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("autogenerated pcie-switch-downstream-port " _("autogenerated pcie-switch-downstream-port "
...@@ -2932,9 +2911,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2932,9 +2911,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
pciopts->chassis, def->info.alias); pciopts->chassis, def->info.alias);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
if (pciopts->modelName if (pciopts->busNr == -1) {
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
pciopts->busNr == -1) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("autogenerated pcie-expander-bus options not set")); _("autogenerated pcie-expander-bus options not set"));
goto error; goto error;
...@@ -2969,8 +2946,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2969,8 +2946,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
pciopts->numaNode); pciopts->numaNode);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
if (pciopts->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE || if (pciopts->targetIndex == -1) {
pciopts->targetIndex == -1) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("autogenerated pci-root options not set")); _("autogenerated pci-root options not set"));
goto error; goto error;
......
...@@ -4113,6 +4113,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle ...@@ -4113,6 +4113,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
const virDomainDef *def) const virDomainDef *def)
{ {
virDomainControllerModelPCI model = controller->model; virDomainControllerModelPCI model = controller->model;
const virDomainPCIControllerOpts *pciopts;
/* skip pcie-root */ /* skip pcie-root */
if (controller->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT) if (controller->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT)
...@@ -4146,6 +4147,17 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle ...@@ -4146,6 +4147,17 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
break; break;
} }
pciopts = &controller->opts.pciopts;
if (controller->model != VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT &&
controller->model != VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST) {
if (pciopts->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("autogenerated %s options not set"),
virDomainControllerModelPCITypeToString(controller->model));
return -1;
}
}
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册