qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-2.5] rcu: Allow calling rcu_(un)register_thr


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH for-2.5] rcu: Allow calling rcu_(un)register_thread() during synchronize_rcu()
Date: Mon, 27 Jul 2015 12:52:44 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1


On 27/07/2015 12:44, Wen Congyang wrote:
> >          * rcu_register_thread() may add nodes to &registry; it will not
> >          * wake up synchronize_rcu, but that is okay because at least 
> > another
> >          * thread must exit its RCU read-side critical section before
> >          * synchronize_rcu is done.  The next iteration of the loop will
> >          * process the new thread or set ->waiting for it.  Hence, this can
> >          * at worst cause synchronize_rcu() to wait for longer.
> I don't understand this. The next iteration of the loop will move the new 
> thread's
> rcu_reader from registry to qsreaders even if we call rcu_read_lock() in the 
> new thread.
> Because rcu_gp_ongoing() will return false.

You're right.  This proves that a comment was necessary! :)

Second try:

     * rcu_register_thread() may add nodes to &registry; it will not
     * wake up synchronize_rcu, but that is okay because at least another
     * thread must exit its RCU read-side critical section before
     * synchronize_rcu is done.  The next iteration of the loop will
     * move the new thread's rcu_reader from &registry to &qsreaders,
     * because rcu_gp_ongoing() will return false.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]