On Mon, Oct 26, 2020 at 01:45:57AM -0400, Joel Fernandes wrote: > On Mon, Oct 26, 2020 at 01:50:58AM +0100, Frederic Weisbecker wrote: > > On Wed, Oct 21, 2020 at 03:08:09PM -0400, Joel Fernandes (Google) wrote: > > > bool rcu_segcblist_accelerate(struct rcu_segcblist *rsclp, unsigned long seq) > > > { > > > - int i; > > > + int i, j; > > > > > > WARN_ON_ONCE(!rcu_segcblist_is_enabled(rsclp)); > > > if (rcu_segcblist_restempty(rsclp, RCU_DONE_TAIL)) > > > @@ -487,6 +508,10 @@ bool rcu_segcblist_accelerate(struct rcu_segcblist *rsclp, unsigned long seq) > > > if (rcu_segcblist_restempty(rsclp, i) || ++i >= RCU_NEXT_TAIL) > > > return false; > > > > > > + /* Accounting: everything below i is about to get merged into i. */ > > > + for (j = i + 1; j <= RCU_NEXT_TAIL; j++) > > > + rcu_segcblist_move_seglen(rsclp, j, i); > > > + > > > > Can you perhaps reuse the below loop to move the seglen? > > Not easily, because we will need to store 'i' into another variable then, which > does not change. > > Besides IMHO, the code is more readable with the loops separated. Works for me. Thanks!