On Fri, Sep 11, 2026 at 12:53 AM Paul E. McKenney <[email protected]> wrote:
>
> On Thu, Sep 10, 2026 at 12:14:27PM +0800, Kunwu Chan wrote:
> > Atomic SRCU does not use the srcu_node combining tree. Exclude it
> > from the SRCU_SIZING_IS_TORTURE() transition in
> > srcu_torture_stats_print().
> >
> > Signed-off-by: Kunwu Chan <[email protected]>
> > ---
> > kernel/rcu/srcutree.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
> > index d462102c6bb6..99d11fb4123a 100644
> > --- a/kernel/rcu/srcutree.c
> > +++ b/kernel/rcu/srcutree.c
> > @@ -2421,7 +2421,7 @@ void srcu_torture_stats_print(struct srcu_struct
> > *ssp, char *tt, char *tf)
> > }
> > pr_cont(" T(%ld,%ld)\n", s0, s1);
> > }
> > - if (SRCU_SIZING_IS_TORTURE())
> > + if (SRCU_SIZING_IS_TORTURE() && ssp->srcu_reader_flavor !=
> > SRCU_READ_FLAVOR_ATOMIC)
> > srcu_transition_to_big(ssp);
> > }
>
> Much better, thank you!
>
> Could you also please add an "else" clause with a WARN_ON_ONCE()
> for ssp->srcu_reader_flavor == SRCU_READ_FLAVOR_ATOMIC?
>
> This is after all a user error where someone said to torture atomic SRCU
> but also said to transition to big.
Thanks, Paul.
Agreed. I'll add the warning in the next version:
if (SRCU_SIZING_IS_TORTURE()) {
if (WARN_ON_ONCE(ssp->srcu_reader_flavor ==
SRCU_READ_FLAVOR_ATOMIC))
return;
srcu_transition_to_big(ssp);
}
This keeps atomic SRCU out of the to-big transition while exposing
the invalid torture configuration.
Thanks,
Kunwu
>
> Thanx, Paul
>
> > EXPORT_SYMBOL_GPL(srcu_torture_stats_print);
> > --
> > 2.43.0
> >