Re: SRCU: Question on srcu_advance_state

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

 



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?

							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