Re: [RFC 02/15] slub: Add isolate() and migrate() methods

From: Tycho Andersen
Date: Fri Mar 08 2019 - 15:08:49 EST


On Sat, Mar 09, 2019 at 06:53:22AM +1100, Tobin C. Harding wrote:
> On Fri, Mar 08, 2019 at 09:22:37AM -0700, Tycho Andersen wrote:
> > On Fri, Mar 08, 2019 at 04:15:46PM +0000, Christopher Lameter wrote:
> > > On Fri, 8 Mar 2019, Tycho Andersen wrote:
> > >
> > > > On Fri, Mar 08, 2019 at 03:14:13PM +1100, Tobin C. Harding wrote:
> > > > > diff --git a/mm/slab_common.c b/mm/slab_common.c
> > > > > index f9d89c1b5977..754acdb292e4 100644
> > > > > --- a/mm/slab_common.c
> > > > > +++ b/mm/slab_common.c
> > > > > @@ -298,6 +298,10 @@ int slab_unmergeable(struct kmem_cache *s)
> > > > > if (!is_root_cache(s))
> > > > > return 1;
> > > > >
> > > > > + /*
> > > > > + * s->isolate and s->migrate imply s->ctor so no need to
> > > > > + * check them explicitly.
> > > > > + */
> > > >
> > > > Shouldn't this implication go the other way, i.e.
> > > > s->ctor => s->isolate & s->migrate
> > >
> > > A cache can have a constructor but the object may not be movable (I.e.
> > > currently dentries and inodes).
> >
> > Yep, thanks. Somehow I got confused by the comment.
>
> I removed code here from the original RFC-v2, if this comment is
> confusing perhaps we are better off without it.

I'd say leave it, unless others have objections. I got lost in the
"no need" and return true for unmergable too-many-nots goop, but it's
definitely worth noting that one implies the other. An alternative
might be to move it to a comment on the struct member instead.

Tycho