回复: SRCU: Question on srcu_advance_state

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

 




________________________________________
发件人: Paul E. McKenney <paulmck@xxxxxxxxxx>
发送时间: 2020年11月21日 9:11
收件人: Zhang, Qiang
抄送: rcu@xxxxxxxxxxxxxxx; Joel Fernandes
主题: Re: SRCU: Question on srcu_advance_state

[Please note this e-mail is from an EXTERNAL e-mail address]

On Fri, Nov 20, 2020 at 04:30:15PM +0800, Zhang,Qiang wrote:
> Hello Pual
>
> sorry to disturb you, I also have some quesetion for you:
>
> in srcu_advance_state function, when seq state == SRCU_STATE_SCAN1, we will
> check, if the previous readers critical region exits, will be returned
> directly.
>
> I'd like to know under what scenario this will happen?

>Suppose that a reader gets preempted for a very long time in the
>middle of __srcu_read_lock():
>
>       int __srcu_read_lock(struct srcu_struct *ssp)
>        {
>               int idx;
>
>              idx = READ_ONCE(ssp->srcu_idx) & 0x1;
>              // PREEMPTED RIGHT HERE
>              this_cpu_inc(ssp->sda->srcu_lock_count[idx]);
>              smp_mb(); /* B */  /* Avoid leaking the critical section. */
>                return idx;
>       }

>Suppose that several SRCU grace periods elapse during that preemption.
>
>Do you see how that can lead to your SRCU_STATE_SCAN1 early exit?

I see,  thank you for your explanation.

Thanks
Qiang
>
>                                                        Thanx, Paul
>
>
>PS:  The paper below outlines a similar situation in userspace RCU,
>     so feel free to use this paper as a hint.  The paper is in two
>    pieces, with the first piece in the first URL and the second in
>     either of the last two URLs.
>
>@article{MathieuDesnoyers2012URCU,
> Author="Mathieu Desnoyers and Paul E. McKenney and Alan Stern and Michel >R. Dagenais and Jonathan Walpole",
> Title="User-Level Implementations of Read-Copy Update",
>journal="IEEE Transactions on Parallel and Distributed Systems",
>volume={23},
> year="2012",
>issn="1045-9219",
> pages="375-382",
> doi="10.1109/TPDS.2011.159",
>publisher="IEEE Computer Society",
> address="Los Alamitos, CA, USA",
> annotation={
>       RCU overview, desiderata, semi-formal semantics, user-level RCU
>       usage scenarios, three classes of RCU implementation, wait-free
>        RCU updates, RCU grace-period batching, update overhead,
>        http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf
>        http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf
>        http://www.computer.org/cms/Computer.org/dl/trans/td/2012/02/extras/ttd2012020375s.pdf
>},
>}




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux