On Thu, Jun 22, 2017 at 04:04:44PM -0300, Flavio Leitner wrote:
> On Thu, Jun 22, 2017 at 01:04:59AM +0800, Huanle Han wrote:
> > Hi,all
> > 
> > I get this problem with latest(dbd8112) branch-2.7 code on my Ubuntu.
> > root@ubuntu:/var/log/# ovs-vsctl show
> > adf2ea99-0c53-4180-914f-7dadaa71302b
> >     Bridge test
> >         Port test
> >             Interface test
> >                 type: internal
> >     Bridge "manage"
> >         Port "manage"
> >             Interface "manage"
> >                 type: internal
> >                 error: "could not open network device manage (File exists)"
> >         Port "veth0"
> >             Interface "veth0"
> >         Port "eth0"
> >             Interface "eth0"
> >     ovs_version: "2.7.0"
> > 
> > How to reproduce:
> > 1. add bridge "manage", up and add ip on it
> > 2. restart ovs-vswitchd
> > 3. "ovs-vsctl show" displays error message.
> > 
> > The reason:
> > In following "netdev_open" call on ovs-vswitchd start, input "type" is NULL
> > and "manage" is opened as a "system" netdev_class iface incorrectly.
> > 
> > #0  netdev_open (name=0x7fffffffe2bc "manage", type=0x0,
> > netdevp=0x7fffffffc3b0) at ../lib/netdev.c:396
> > #1  0x000000000052c492 in get_src_addr (ip6_dst=0x7fffffffe2ac,
> > output_bridge=0x7fffffffe2bc "manage", psrc=0x8f3490) at
> > ../lib/ovs-router.c:141
> > #2  0x000000000052c85d in ovs_router_insert__ (priority=104 'h',
> > ip6_dst=0x7fffffffe29c, plen=104 'h', output_bridge=0x7fffffffe2bc
> > "manage", gw=0x7fffffffe2ac) at ../lib/ovs-router.c:202
> > #3  0x000000000052c980 in ovs_router_insert (ip_dst=0x7fffffffe29c,
> > plen=104 'h', output_bridge=0x7fffffffe2bc "manage", gw=0x7fffffffe2ac) at
> > ../lib/ovs-router.c:228
> > #4  0x000000000058f63a in route_table_handle_msg (change=0x7fffffffe290) at
> > ../lib/route-table.c:295
> > #5  0x000000000058f1da in route_table_reset () at ../lib/route-table.c:174
> > #6  0x000000000058f034 in route_table_init () at ../lib/route-table.c:110
> > #7  0x0000000000495838 in dp_initialize () at ../lib/dpif.c:126
> > #8  0x0000000000495b40 in dp_enumerate_types (types=0x7fffffffe3a0) at
> > ../lib/dpif.c:244
> > #9  0x000000000042eb1c in enumerate_types (types=0x7fffffffe3a0) at
> > ../ofproto/ofproto-dpif.c:267
> > #10 0x000000000041b81c in ofproto_enumerate_types (types=0x7fffffffe3a0) at
> > ../ofproto/ofproto.c:432
> > #11 0x000000000040df1e in bridge_run__ () at ../vswitchd/bridge.c:3020
> > #12 0x000000000040e196 in bridge_run () at ../vswitchd/bridge.c:3082
> > #13 0x00000000004138ef in main (argc=1, argv=0x7fffffffe578) at
> > ../vswitchd/ovs-vswitchd.c:119
> > 
> > After then, ovs fails to netdev_open "manage" with type == "internal".
> > "File exists" error is reported.
> > I think commit d3b8f50(netdev: Fix netdev_open() to adhere to class type if
> > given) introduces this problem. It need be improved.
> 
> Your analysis is correct.  One solution is to wait vswitchd to
> configure first and only then enable ovs-route.  The problem is that
> more modules might use netdev_open() and it doesn't sound like a good
> idea to have a control per module.
> 
> Another option is to map the device's info to a class instead of using
> "system", so we could use internal classes for vports, for instance.
> However, that doesn't guarantee it will match with what is configured
> in the DB.

This sounds like the kind of problem that I expected the following
commit might cause.

    commit d3b8f5052292b3ba9084ffed097e90b87f2950f5
    Author: Eelco Chaudron <[email protected]>
    Date:   Thu Jun 1 14:38:09 2017 +0200

        netdev: Fix netdev_open() to adhere to class type if given

If we can't fix it somehow, we might need to revert.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to