[libvirt PATCH 0/2] A couple simple cleanups

Noticed these while doing other work. Laine Stump (2): qemu: add check for QEMU_CAPS_NETDEV_STREAM during validation qemu: remove extraneous error log when qemuPasstStart() fails during hotplug src/qemu/qemu_hotplug.c | 5 +- src/qemu/qemu_validate.c | 6 ++ .../net-user-passt.x86_64-latest.xml | 61 +++++++++++++++++++ tests/qemuxml2xmltest.c | 2 +- 4 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 tests/qemuxml2xmloutdata/net-user-passt.x86_64-latest.xml -- 2.39.2

In commit 5af6134e I had added a new capability that is true if QEMU allows "-netdev stream", but somehow neglected to actually check it in commit a56f0168d when hooking up passt support to qemu. This isn't catastrophic, since QEMU itself will still report an error, but that error isn't as easy to understand as a libvirt-generated error. Fixes: a56f0168d576fa01cec204dc3c67d4d63ab8487f Signed-off-by: Laine Stump <laine@redhat.com> --- src/qemu/qemu_validate.c | 6 ++ .../net-user-passt.x86_64-latest.xml | 61 +++++++++++++++++++ tests/qemuxml2xmltest.c | 2 +- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 tests/qemuxml2xmloutdata/net-user-passt.x86_64-latest.xml diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 12055d5402..c877aa73d4 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -1837,6 +1837,12 @@ qemuValidateDomainDeviceDefNetwork(const virDomainNetDef *net, size_t i; if (net->type == VIR_DOMAIN_NET_TYPE_USER) { + if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_NETDEV_STREAM)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("the passt network backend is not supported with this QEMU binary")); + return -1; + } if (net->guestIP.nroutes) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Invalid attempt to set network interface " diff --git a/tests/qemuxml2xmloutdata/net-user-passt.x86_64-latest.xml b/tests/qemuxml2xmloutdata/net-user-passt.x86_64-latest.xml new file mode 100644 index 0000000000..d7e0ef5f90 --- /dev/null +++ b/tests/qemuxml2xmloutdata/net-user-passt.x86_64-latest.xml @@ -0,0 +1,61 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='usb' index='0' model='none'/> + <controller type='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <interface type='user'> + <mac address='00:11:22:33:44:55'/> + <source dev='eth42'/> + <ip address='172.17.2.0' family='ipv4' prefix='24'/> + <ip address='2001:db8:ac10:fd01::feed' family='ipv6'/> + <portForward proto='tcp' address='2001:db8:ac10:fd01::1:10'> + <range start='22' to='2022'/> + <range start='1000' end='1050'/> + <range start='1020' exclude='yes'/> + <range start='1030' end='1040' exclude='yes'/> + </portForward> + <portForward proto='udp' address='1.2.3.4' dev='eth0'> + <range start='5000' end='5020' to='6000'/> + <range start='5010' end='5015' exclude='yes'/> + </portForward> + <portForward proto='tcp'> + <range start='80'/> + </portForward> + <portForward proto='tcp'> + <range start='443' to='344'/> + </portForward> + <model type='rtl8139'/> + <backend type='passt' logFile='/var/log/loglaw.blog'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </interface> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 3a652dde61..2d2d800523 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -459,7 +459,7 @@ mymain(void) DO_TEST_NOCAPS("net-vhostuser"); DO_TEST_NOCAPS("net-user"); DO_TEST_NOCAPS("net-user-addr"); - DO_TEST_NOCAPS("net-user-passt"); + DO_TEST_CAPS_LATEST("net-user-passt"); DO_TEST_NOCAPS("net-virtio"); DO_TEST_NOCAPS("net-virtio-device"); DO_TEST_NOCAPS("net-virtio-disable-offloads"); -- 2.39.2

qemuPasstStart() already logs any error that occurs, so having the caller log a generic error message only serves to obscure the actual problem. Fixes: a56f0168d576fa01cec204dc3c67d4d63ab8487f Signed-off-by: Laine Stump <laine@redhat.com> --- src/qemu/qemu_hotplug.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index b4cddef9f5..da17525824 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1205,11 +1205,8 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver, case VIR_DOMAIN_NET_TYPE_USER: if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST) { - if (qemuPasstStart(vm, net) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("Failed to start passt")); + if (qemuPasstStart(vm, net) < 0) goto cleanup; - } } else if (!priv->disableSlirp && virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DBUS_VMSTATE)) { -- 2.39.2

On 2/22/23 01:29, Laine Stump wrote:
Noticed these while doing other work.
Laine Stump (2): qemu: add check for QEMU_CAPS_NETDEV_STREAM during validation qemu: remove extraneous error log when qemuPasstStart() fails during hotplug
src/qemu/qemu_hotplug.c | 5 +- src/qemu/qemu_validate.c | 6 ++ .../net-user-passt.x86_64-latest.xml | 61 +++++++++++++++++++ tests/qemuxml2xmltest.c | 2 +- 4 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 tests/qemuxml2xmloutdata/net-user-passt.x86_64-latest.xml
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal
participants (2)
-
Laine Stump
-
Michal Prívozník