Re: [PATCH 5/6] super: use common iterator (Part 2)

From: Christian Brauner
Date: Sat Mar 29 2025 - 03:38:13 EST


On Fri, Mar 28, 2025 at 02:58:29PM -0400, James Bottomley wrote:
> On Fri, 2025-03-28 at 17:15 +0100, Christian Brauner wrote:
> [...]
> > +static inline void super_cb_grabbed(struct super_block *sb,
> > +     void (*f)(struct super_block *,
> > void *),
> > +     void *arg)
> > +{
> > + if (super_lock_excl(sb)) {
> > + bool active = atomic_inc_not_zero(&sb->s_active);
> > + super_unlock_excl(sb);
> > + if (active)
> > + f(sb, arg);
> > + deactivate_super(sb);
>
> I don't think this can be right: if we fail to increment s_active
> because it's zero, we shouldn't call deactivate_super(), should we?

Fixed in-tree. Thanks.