[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: |
Wen Congyang |
Subject: |
Re: [Qemu-devel] [PATCH for-2.5] rcu: Allow calling rcu_(un)register_thread() during synchronize_rcu() |
Date: |
Mon, 27 Jul 2015 18:54:16 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 07/27/2015 06:52 PM, Paolo Bonzini wrote:
>
>
> On 27/07/2015 12:44, Wen Congyang wrote:
>>> * rcu_register_thread() may add nodes to ®istry; 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! :)
Yes, I agree with it.
>
> Second try:
>
> * rcu_register_thread() may add nodes to ®istry; 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 ®istry to &qsreaders,
> * because rcu_gp_ongoing() will return false.
I will update the comment and send it again.
Thanks
Wen Congyang
>
> Paolo
> .
>