[ovs-dev] [PATCH 0/2] Don't use CMAP while in a quiescent state.

Ilya Maximets i.maximets at samsung.com
Thu Nov 1 13:58:39 UTC 2018


Both issues catched by adding following line to cmap_get_impl():

    ovs_assert(single_threaded() || !ovsrcu_is_quiescent());

I'd like to add it there permanently under the NDEBUG config, but
it causes an issue that I don't know how to fix properly yet.
The issue is that CMAPs with modifications could be used from the
atexit handlers after execution of ovsrcu_exit() and returning from
main. Could be catched on the unit test:
    'ovs-vswitchd -- switch over to another ovs-vswitchd process'

Log from the check-valgrind:
==26554== Process terminating with default action of signal 6 (SIGABRT)
==26554==    at 0x699BE97: raise (raise.c:51)
==26554==    by 0x699D800: abort (abort.c:79)
==26554==    by 0x851FFA: ovs_abort_valist (util.c:363)
==26554==    by 0x859B3D: vlog_abort_valist (vlog.c:1227)
==26554==    by 0x859BC2: vlog_abort (vlog.c:1241)
==26554==    by 0x851962: ovs_assert_failure (util.c:83)
==26554==    by 0x78108A: cmap_get_impl (cmap.c:207)
==26554==    by 0x78108A: cmap_find (cmap.c:368)
==26554==    by 0x7BEAA3: netdev_lookup_class (netdev.c:204)
==26554==    by 0x7BEAA3: netdev_unref (netdev.c:578)
==26554==    by 0x84C69D: tnl_port_map_delete_ipdev (in /vswitchd/ovs-vswitchd)
==26554==    by 0x81A519: rt_entry_delete__ (ovs-router.c:283)
==26554==    by 0x81A519: ovs_router_flush (ovs-router.c:509)
==26554==    by 0x79D06B: call_hooks (fatal-signal.c:254)
==26554==    by 0x79D06B: fatal_signal_atexit_handler (fatal-signal.c:239)
==26554==    by 0x69A0040: __run_exit_handlers (exit.c:108)
==26554==    by 0x69A0139: exit (exit.c:139)
==26554==    by 0x697EB9D: (below main) (libc-start.c:344)

Ilya Maximets (2):
  ofproto-dpif-upcall: Don't purge ukeys while in a quiescent state.
  ofproto-dpif-upcall: Don't flush datapath flows in quiescent state.

 ofproto/ofproto-dpif-upcall.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

-- 
2.17.1



More information about the dev mailing list