On Sat, Sep 30, 2023 at 2:40 PM Frederic Weisbecker <[email protected]> wrote:
>
> Le Sat, Sep 30, 2023 at 08:15:06AM +0530, Neeraj upadhyay a écrit :
> > On Sat, Sep 30, 2023 at 4:15 AM Frederic Weisbecker <[email protected]> 
> > wrote:
> > >
> > > Le Thu, Sep 28, 2023 at 05:39:17PM -0400, Joel Fernandes a écrit :
> > > > If srcu_invoke_callbacks() was really called for the rdp, I would have
> > > > expected rcu_segcblist_advance() to advance all those pending
> > > > callbacks to 304.
> > > >
> > > > I posit that probably srcu_invoke_callbacks() is not even being called
> > > > in the first place, otherwise why is the DONE segment count still 0?
> > > > DONE should not be 0, otherwise callbacks will not run. The segcblist
> > > > of the rdp seems out of date perhaps due to rcu_invoke_callbacks() not
> > > > being called due to some other bug (or a workqueue/timer issue causing
> > > > the srcu_invoke_callbacks() to not run?).
> > >
> > > Speaking of, I'm looking at srcu_gp_end() and the comment after releasing
> > > srcu_gp_mutex says:
> > >
> > >               "/* A new grace period can start at this point.  But only 
> > > one. */"
> > >
> > > But what ensures that?
> > >
> >
> > I think ->srcu_cb_mutex ensures that.
> >
> > /* Prevent more than one additional grace period. */
> > mutex_lock(&sup->srcu_cb_mutex);
>
> Oh I confused ->srcu_cb_mutex with ->srcu_gp_mutex, didn't I? ;-)

Maybe :) From your reply, I thought you meant srcu_invoke_callbacks() for one GP
might execute after multiple subsequent GPs have completed, which makes sense.


Thanks
Neeraj

Reply via email to