Bug 1596176
| Summary: | Error message when restart libvirtd and a vm with interface connected to ovs bridge | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Fangge Jin <fjin> | |
| Component: | libvirt | Assignee: | Laine Stump <laine> | |
| Status: | CLOSED WONTFIX | QA Contact: | yalzhang <yalzhang> | |
| Severity: | low | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 7.6 | CC: | dyuan, jdenemar, laine, lmen, xuzhang | |
| Target Milestone: | rc | |||
| Target Release: | --- | |||
| Hardware: | x86_64 | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | Doc Type: | If docs needed, set a value | ||
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1596628 (view as bug list) | Environment: | ||
| Last Closed: | 2019-04-03 11:48:42 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 1596628 | |||
This is caused by libvirtd checking that each guest tap device is connected to the correct bridge. The problem is that it's doing this by retrieving the IFLA_MASTER for the tap with netlink, and for some reason IFLA_MASTER is always set to "ovs-system" for any tap that is attached to an OVS switch (rather than being set to the name of the switch itself, which is the case for normal Linux host bridges). libvirt thus thinks that the tap is connected to "ovs-system" rather than "ovsbr0", and tries to remove the device from ovs-system (using the standard SIOCBRDELIF ioctl, which would of course fail for an OVS switch even if we were giving it the correct name for the switch). The following 3 patches were pushed upstream (*after* the 4.5.0 release):
commit 032548c42af49d83b760a8b4c5a29dd78149ab7b
Author: Laine Stump <laine>
Date:   Sun Jul 1 19:24:19 2018 -0400
    util: new function virNetDevOpenvswitchInterfaceGetMaster()
    
commit 15072f3a97d8b55421fa418df58708e306d8813d
Author: Laine Stump <laine>
Date:   Sun Jul 1 19:27:17 2018 -0400
    util: add some debug log to virNetDevGetMaster
commit c17edaf7782d7a9b15940ac8422c1761e8f90902
Author: Laine Stump <laine>
Date:   Sun Jul 1 19:29:03 2018 -0400
    network: properly check for taps that are connected to an OVS bridge
    Development Management has reviewed and declined this request. You may appeal this decision by reopening this request.  | 
Description of problem: Start a vm with interface connected to ovs bridge, then restart libvirtd. There will be error in libvirtd.log: 2018-06-28 09:36:16.124+0000: 18286: error : virNetDevBridgeRemovePort:743 : Unable to remove bridge ovs-system port vnet1: Operation not supported /lib64/libvirt.so.0(virLogMessage+0x9f)[0x7fb478388f6f] /lib64/libvirt.so.0(+0x14f73d)[0x7fb47835873d] /lib64/libvirt.so.0(virRaiseErrorFull+0x264)[0x7fb478359944] /lib64/libvirt.so.0(virReportSystemErrorFull+0x1c4)[0x7fb478359f04] /lib64/libvirt.so.0(virNetDevBridgeRemovePort+0x190)[0x7fb4783973a0] /usr/lib64/libvirt/connection-driver/libvirt_driver_network.so(+0x140d7)[0x7fb45eddd0d7] /lib64/libvirt.so.0(virDomainNetNotifyActualDevice+0x22)[0x7fb47845bcb2] /usr/lib64/libvirt/connection-driver/libvirt_driver_qemu.so(+0x105852)[0x7fb4235dd852] /lib64/libvirt.so.0(+0x1d6cd5)[0x7fb4783dfcd5] /lib64/libpthread.so.0(+0x7dd5)[0x7fb4756fbdd5] /lib64/libc.so.6(clone+0x6d)[0x7fb475424ead] Version-Release number of selected component (if applicable): libvirt-4.4.0-2.virtcov.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1.Create a ovs network: # virsh net-dumpxml ovs-net <network> <name>ovs-net</name> <uuid>b174b6e9-a05c-480a-adb1-a185310079f1</uuid> <forward mode='bridge'/> <bridge name='ovsbr0'/> <virtualport type='openvswitch'/> </network> 2.Start a vm with interface connected to ovs network: <interface type='network'> <mac address='52:54:00:a9:6d:05'/> <source network='ovs-net'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x13' function='0x0'/> </interface> 3.Restart libvirtd Actual results: Error in libvirtd.log when restart libvirtd Expected results: No error Additional info: