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

Reply via email to