Hi all, Occasionally, I get error when creating a bridge using “ovs-vsctl add-br br-eth”
ovs-vsctl: Error detected while setting up 'br-eth'. See ovs-vswitchd log for details. Ovs-vswitched log is below: 2017-05-11T03:45:25.293Z|00026|ofproto_dpif|INFO|system@ovs-system: Datapath supports recirculation 2017-05-11T03:45:25.293Z|00027|ofproto_dpif|INFO|system@ovs-system: MPLS label stack length probed as 1 2017-05-11T03:45:25.293Z|00028|ofproto_dpif|INFO|system@ovs-system: Datapath supports unique flow ids 2017-05-11T03:45:25.293Z|00029|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_state 2017-05-11T03:45:25.293Z|00030|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_zone 2017-05-11T03:45:25.293Z|00031|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_mark 2017-05-11T03:45:25.293Z|00032|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_label 2017-05-11T03:45:25.364Z|00001|ofproto_dpif_upcall(handler226)|INFO|received packet on unassociated datapath port 0 2017-05-11T03:45:25.368Z|00033|netdev_linux|WARN|ethtool command ETHTOOL_GFLAGS on network device br-eth failed: No such device 2017-05-11T03:45:25.368Z|00034|dpif|WARN|system@ovs-system: failed to add br-eth as port: No such device 2017-05-11T03:45:25.368Z|00035|bridge|INFO|bridge br-eth: using datapath ID 00002a51cf9f2841 2017-05-11T03:45:25.368Z|00036|connmgr|INFO|br-eth: added service controller "punix:/var/run/openvswitch/br-eth.mgmt" Then I delete the br-eth, then try to add it. But, still get same error as above. However, bridge which name is different from br-eth can be created successfully. Some clues: 1. As I kown, the port br-eth’s type is internel, and there is no way to get into netdev_linux_ethtool_set_flag(). But, the log shows that request.type is wrong. request.type get wrong value OVS_VPORT_TYPE_NETDEV instead of OVS_VPORT_TYPE_INTERNAL. static int dpif_netlink_port_add__(struct dpif_netlink *dpif, struct netdev *netdev, odp_port_t *port_nop) OVS_REQ_WRLOCK(dpif->upcall_lock) { …… if (request.type == OVS_VPORT_TYPE_NETDEV) { #ifdef _WIN32 /* XXX : Map appropiate Windows handle */ #else netdev_linux_ethtool_set_flag(netdev, ETH_FLAG_LRO, "LRO", false); #endif } …… } 2. Debug ovs-vswitchd with gdb. I find that there is a netdev with same name was not deleted(lib/netdev.c:netdev_open). netdev_open (name=0xffff6000d6b0 "br-int", type=0x52ca80 "internal", netdevp=0xfffffc20fab8, netdevp@entry=0xfffffc20fb28) at lib/netdev.c:354 354 { (gdb) n 358 netdev_initialize(); (gdb) 360 ovs_mutex_lock(&netdev_class_mutex); (gdb) 361 ovs_mutex_lock(&netdev_mutex); (gdb) 360 ovs_mutex_lock(&netdev_class_mutex); (gdb) 361 ovs_mutex_lock(&netdev_mutex); (gdb) 362 netdev = shash_find_data(&netdev_shash, name); (gdb) 363 if (!netdev) { (gdb) print netdev->name $1 = 0x47852e0 "br-int" (gdb) print netdev->refcnt There is no member named refcnt. (gdb) n 405 netdev->ref_cnt++; (gdb) print netdev->ref_cnt $2 = 2 (gdb) n 406 *netdevp = netdev; (gdb) print netdev->ref_cnt $3 = 3 There must be something wrong when deleting bridge. But, I cannot find out a way to reproduce it and why it was not deleted correctly. Is any can offer some suggestions to reproduce the error or solve it? Note: ovs version: 2.5.2 kernel version: 4.1
_______________________________________________ discuss mailing list disc...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-discuss