Description of problem: "An error occurred, but the cause is unknown" when trying to update virtio interface without frames for 'rx' in 'coalesce' Version-Release number of selected component (if applicable): libvirt-3.9.0-8.el7.x86_64 qemu-kvm-rhev-2.10.0-17.el7.x86_64 kernel-3.10.0-830.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. Prepare a VM without interface # virsh start test vDomain test started # virsh domstate test running # virsh dumpxml test |grep "<interface" -A10 No output 2. Hot-plug interface # cat net.xml <interface type='network'> <source network='default'/> <mac address='00:16:3e:77:e2:ed'/> <model type='virtio'/> <coalesce> <rx> <frames max='32'/> </rx> </coalesce> </interface> # virsh attach-device test net.xml Device attached successfully # virsh dumpxml test |grep "<interface" -A12 <interface type='network'> <mac address='00:16:3e:77:e2:ed'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <coalesce> <rx> <frames max='32'/> </rx> </coalesce> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> 3. Update the interface with the following xml file # cat net1.xml <interface type='network'> <source network='default'/> <mac address='00:16:3e:77:e2:ed'/> <model type='virtio'/> <coalesce> <rx> </rx> </coalesce> </interface> # virsh update-device test net1.xml error: Failed to update device from net1.xml error: An error occurred, but the cause is unknown Actual results: As step3 shows Expected results: Raise reasonable error info Additional info:
Send a patch: https://www.redhat.com/archives/libvir-list/2018-October/msg00771.html
In libvirt-4.9 upstream, I find it can be reproduce in inactive update: 1. Prepare an inactive VM. 2. Attach an interface device with complete coalesce setting in config: # cat /tmp/net-coa.xml <interface type='network'> <source network='default'/> <mac address='00:16:3e:77:e2:ed'/> <model type='virtio'/> <coalesce> <rx> <frames max='32'/> </rx> </coalesce> </interface> # virsh attach-device rhel7 /tmp/net-coa.xml --config Device attached successfully # cat /tmp/net-empty-rx.xml <interface type='network'> <source network='default'/> <mac address='00:16:3e:77:e2:ed'/> <model type='virtio'/> <coalesce> <rx> </rx> </coalesce> </interface> # virsh dumpxml rhel7|awk '/<inter/,/<\/inter/' <interface type='network'> <mac address='00:16:3e:77:e2:ed'/> <source network='default'/> <model type='virtio'/> <coalesce> <rx> <frames max='32'/> </rx> </coalesce> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface> # cat /tmp/net-empty-rx.xml <interface type='network'> <source network='default'/> <mac address='00:16:3e:77:e2:ed'/> <model type='virtio'/> <coalesce> <rx> </rx> </coalesce> </interface> # virsh update-device rhel7 /tmp/net-empty-rx.xml --config error: Failed to update device from /tmp/net-empty-rx.xml error: An error occurred, but the cause is unknown Could you please to try this on latest libvirt of rhel7?
Hi Still can hit this issue in libvirt-4.5.0-10.virtcov.el7_6.2.x86_64
*** Bug 1607206 has been marked as a duplicate of this bug. ***
I can reproduce it on libvirt-daemon-5.5.0-2.module+el8.1.0+3773+7dd501bf.x86_64 1. start vm with coalesce settings: # virsh dumpxml rhel | grep /interface -B10 <interface type='network'> <mac address='52:54:00:b5:b3:0d'/> <source network='default'/> <model type='virtio'/> <coalesce> <rx> <frames max='32'/> </rx> </coalesce> <address type='pci' domain='0x0000' bus='0x08' slot='0x02' function='0x0'/> </interface> 2. update the device with incomplete xml # cat net.xml <interface type='network'> <mac address='52:54:00:b5:b3:0d'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <coalesce> <rx> </rx> </coalesce> <address type='pci' domain='0x0000' bus='0x08' slot='0x02' function='0x0'/> </interface> # virsh update-device rhel net.xml error: Failed to update device from net.xml error: An error occurred, but the cause is unknown Another scenario: edit the guest xml to with incomplete xml, it will report the same error: # virsh edit rhel <interface type='network'> <mac address='52:54:00:b5:b3:0d'/> <source network='default'/> <model type='virtio'/> <coalesce> <rx> </rx> </coalesce> ...... error: An error occurred, but the cause is unknown Failed. Try again? [y,n,i,f,?]:
After evaluating this issue, there are no plans to address it further or fix it in an upcoming release. Therefore, it is being closed. If plans change such that this issue will be fixed in an upcoming release, then the bug can be reopened.
Patch proposed on the list: https://listman.redhat.com/archives/libvir-list/2021-March/msg00244.html
Patch v2 proposed on the list: https://listman.redhat.com/archives/libvir-list/2021-March/msg00462.html
Merged upstream as: 511bdb0bb2 qemu: don't raise error upon interface update without <frames/> for <rx/> in coalesce v7.1.0-311-g511bdb0bb2
To POST per comment 14.
Verified this bug on: libvirt-daemon-7.4.0-1.module+el8.5.0+11218+83343022.x86_64 qemu-kvm-6.0.0-19.module+el8.5.0+11385+6e7d542e.x86_64 Steps: 1. Add by virsh edit # virsh edit avocado-vt-vm1 ... <interface type='network'> <mac address='52:54:00:9f:49:60'/> <source network='default'/> <model type='virtio'/> <coalesce> <rx> </rx> </coalesce> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface>... Domain 'avocado-vt-vm1' XML configuration edited. # virsh dumpxml avocado-vt-vm1 |grep /interface -B5 <interface type='network'> <mac address='52:54:00:9f:49:60'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> No error, and <coalesce> is ignored. 2. Define guest with the setting # cat avocado-vt-vm1.xml | grep /interface -B9 <interface type='network'> <mac address='52:54:00:9f:49:60'/> <source network='default'/> <model type='virtio'/> <coalesce> <rx> </rx> </coalesce> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> # virsh define avocado-vt-vm1.xml Domain 'avocado-vt-vm1' defined from avocado-vt-vm1.xml # virsh dumpxml avocado-vt-vm1 |grep /interface -B5 <interface type='network'> <mac address='52:54:00:9f:49:60'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> No error, and <coalesce> is ignored. 3. By update-device for guest with no <coalesce> # virsh start avocado-vt-vm1 Domain 'avocado-vt-vm1' started # cat iface.xml <interface type='network'> <mac address='52:54:00:9f:49:60'/> <source network='default'/> <model type='virtio'/> <coalesce> <rx> </rx> </coalesce> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> # virsh update-device avocado-vt-vm1 iface.xml Device updated successfully # virsh dumpxml avocado-vt-vm1 |grep /interface -B7 <interface type='network'> <mac address='52:54:00:9f:49:60'/> <source network='default' portid='1f03c5d3-973c-4e6d-8e70-f1ac59b7090d' bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> 4. By update-device for guest with with valid <coalesce> setting # virsh update-device avocado-vt-vm1 iface-1.xml Device updated successfully # virsh dumpxml avocado-vt-vm1 |grep /interface -B10 <source network='default' portid='c320d301-bf26-4511-ac72-e7760adcad6b' bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <coalesce> <rx> <frames max='32'/> </rx> </coalesce> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> # virsh update-device avocado-vt-vm1 iface.xml Device updated successfully # virsh dumpxml avocado-vt-vm1 |grep /interface -B7 <interface type='network'> <mac address='52:54:00:9f:49:60'/> <source network='default' portid='5954725a-2e40-4f5a-a0d1-d5c888e2c027' bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> Since results are as expected, mark bug as verified.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (virt:av bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2021:4684