On Thu, Mar 24, 2016 at 11:31:09AM -0700, Daniele Di Proietto wrote: > A new thread must be started in a non quiescent state. There is a call > to ovsrcu_quiesce_end() in ovsthread_wrapper(), to enforce this. > > ovs_thread_create(), instead, is executed in the parent thread. It must > call ovsrcu_quiesce_end() on its first invocation, to put the main > thread in a non quiescent state. On every other invocation, it doesn't > make sense to alter the calling thread state, so this commits wraps the > call to ovsrcu_quiesce_end() in an ovsthread_once construct. > > This fixes a bug in ovs-rcu where the first call in the process to > ovsrcu_quiesce_start() will not be honored, because the calling thread > will need to create the 'urcu' thread (and creating a thread will > wrongly end its quiescent state).
Good catch, thank you! _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev