mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	rcu/tree: Add comment to describe GP-done condition in fqs loop
Add a comment to explain why !rcu_preempt_blocked_readers_cgp() condition is required on root rnp node, for GP completion check in rcu_gp_fqs_loop(). Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> Signed-off-by: Neeraj Upadhyay <quic_neeraju@quicinc.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
		
							parent
							
								
									9bdb5b3a8d
								
							
						
					
					
						commit
						a03ae49c47
					
				
					 1 changed files with 9 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -2005,7 +2005,15 @@ static noinline_for_stack void rcu_gp_fqs_loop(void)
 | 
			
		|||
		rcu_gp_torture_wait();
 | 
			
		||||
		WRITE_ONCE(rcu_state.gp_state, RCU_GP_DOING_FQS);
 | 
			
		||||
		/* Locking provides needed memory barriers. */
 | 
			
		||||
		/* If grace period done, leave loop. */
 | 
			
		||||
		/*
 | 
			
		||||
		 * Exit the loop if the root rcu_node structure indicates that the grace period
 | 
			
		||||
		 * has ended, leave the loop.  The rcu_preempt_blocked_readers_cgp(rnp) check
 | 
			
		||||
		 * is required only for single-node rcu_node trees because readers blocking
 | 
			
		||||
		 * the current grace period are queued only on leaf rcu_node structures.
 | 
			
		||||
		 * For multi-node trees, checking the root node's ->qsmask suffices, because a
 | 
			
		||||
		 * given root node's ->qsmask bit is cleared only when all CPUs and tasks from
 | 
			
		||||
		 * the corresponding leaf nodes have passed through their quiescent state.
 | 
			
		||||
		 */
 | 
			
		||||
		if (!READ_ONCE(rnp->qsmask) &&
 | 
			
		||||
		    !rcu_preempt_blocked_readers_cgp(rnp))
 | 
			
		||||
			break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue