mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 06:50:22 +03:00
qemu: validate that model is virtio for vhostuser and vdpa interfaces in the same place
Both vhostuser and vdpa interface types must use the virtio model in the guest (because part of the functionality is implemented in the guest virtio driver). Due to ["because that's the way it happened"] this has been validated for vhostuser in the hypervisor-agnostic validate function, but for vdpa it has been done in the QEMU-specific validate. Since these interface models are only supported by QEMU anyway, validate for both of them in the QEMU validation function. Take advantage of this change to switch to using virDomainNetIsVirtioModel(net) instead of "net->model == VIR_DOMAIN_NET_MODEL_VIRTIO" (the former also matches ...VIRTIO_TRANSITIONAL and ...VIRTIO_NON_TRANSITIONAL, so is more correct). Signed-off-by: Laine Stump <laine@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
6345ee60d8
commit
154d44a585
@ -2186,12 +2186,6 @@ virDomainNetDefValidate(const virDomainNetDef *net)
|
||||
|
||||
switch (net->type) {
|
||||
case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
|
||||
if (!virDomainNetIsVirtioModel(net)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Wrong or no <model> 'type' attribute specified with <interface type='vhostuser'/>. vhostuser requires the virtio-net* frontend"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (net->data.vhostuser->data.nix.listen &&
|
||||
net->data.vhostuser->data.nix.reconnect.enabled == VIR_TRISTATE_BOOL_YES) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
|
@ -1823,17 +1823,18 @@ qemuValidateDomainDeviceDefNetwork(const virDomainNetDef *net,
|
||||
_("vDPA devices are not supported with this QEMU binary"));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (net->model != VIR_DOMAIN_NET_MODEL_VIRTIO) {
|
||||
if (!virDomainNetIsVirtioModel(net)) {
|
||||
if (net->type == VIR_DOMAIN_NET_TYPE_VDPA ||
|
||||
net->type == VIR_DOMAIN_NET_TYPE_VHOSTUSER) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("invalid model for interface of type '%1$s': '%2$s'"),
|
||||
_("invalid model for interface of type '%1$s': '%2$s' - must be 'virtio'"),
|
||||
virDomainNetTypeToString(net->type),
|
||||
virDomainNetModelTypeToString(net->model));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (virDomainNetIsVirtioModel(net)) {
|
||||
} else {
|
||||
if (net->driver.virtio.rx_queue_size) {
|
||||
if (!VIR_IS_POW2(net->driver.virtio.rx_queue_size)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
|
Loading…
x
Reference in New Issue
Block a user