[libvirt] [PATCH v2] qemu: Assign device address before qemuDomainSupportsNicdev
Wang Yechao
wang.yechao255 at zte.com.cn
Mon Dec 17 11:30:34 UTC 2018
qemuDomainSupportsNicdev will check the device address type on
aarch64. If it is invoked before device address assigned, hotadd
vhostuser interface with no address specified will get error.
Let qemuDomainEnsurePCIAddress run before qemuDomainSupportsNicdev.
Signed-off-by: Wang Yechao <wang.yechao255 at zte.com.cn>
---
v1 patch:
https://www.redhat.com/archives/libvir-list/2018-December/msg00435.html
Changes in v2:
- do not modify the address type, let qemuDomainEnsurePCIAddress do it.
---
src/qemu/qemu_hotplug.c | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 8da0233..f25c8db 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1369,6 +1369,25 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
if (qemuAssignDeviceNetAlias(vm->def, net, -1) < 0)
goto cleanup;
+ if (qemuDomainIsS390CCW(vm->def) &&
+ net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
+ virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CCW)) {
+ net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
+ if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
+ goto cleanup;
+ if (virDomainCCWAddressAssign(&net->info, ccwaddrs,
+ !net->info.addr.ccw.assigned) < 0)
+ goto cleanup;
+ } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("virtio-s390 net device cannot be hotplugged."));
+ goto cleanup;
+ } else if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) {
+ goto cleanup;
+ }
+
+ releaseaddr = true;
+
switch (actualType) {
case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
@@ -1503,25 +1522,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
goto cleanup;
}
- if (qemuDomainIsS390CCW(vm->def) &&
- net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
- virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CCW)) {
- net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
- if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
- goto cleanup;
- if (virDomainCCWAddressAssign(&net->info, ccwaddrs,
- !net->info.addr.ccw.assigned) < 0)
- goto cleanup;
- } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("virtio-s390 net device cannot be hotplugged."));
- goto cleanup;
- } else if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) {
- goto cleanup;
- }
-
- releaseaddr = true;
-
if (VIR_ALLOC_N(tapfdName, tapfdSize) < 0 ||
VIR_ALLOC_N(vhostfdName, vhostfdSize) < 0)
goto cleanup;
--
1.8.3.1
More information about the libvir-list
mailing list