From: Harry Yoo <harry@kernel.org>
To: Hao Li <hao.li@linux.dev>
Cc: vbabka@kernel.org, akpm@linux-foundation.org, cl@gentwo.org,
rientjes@google.com, roman.gushchin@linux.dev,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 1/2] mm/slub: make the case handling in __slab_free() easier to follow
Date: Mon, 14 Sep 2026 14:39:16 +0100 [thread overview]
Message-ID: <aqf4IsztnhrXBocx@thinkstation> (raw)
In-Reply-To: <20260824122513.3829-1-hao.li@linux.dev>
On Mon, Aug 24, 2026 at 08:25:09PM +0800, Hao Li wrote:
> There are 7 possible transitions in __slab_free():
>
> a. partial->partial
> b. partial->empty, offlist
> c. partial->empty, onlist, exceeding min_partial
> d. partial->empty, onlist, not exceeding min_partial
> e. full->empty, exceeding min_partial
> f. full->empty, not exceeding min_partial
> g. full->partial
>
> (There is no offlist variant of e, f and g as a full slab is on no
> list.)
>
> Clarify which case each branch handles, and replace the goto with a
> return at the end of the skipped block so that every branch explicitly
> states its coverage.
>
> Case 'a' is the only path that needs neither list_lock nor list
> handling. Give it an early continue: handling it upfront is much clearer
> than forcing every other case into a nested block.
>
> Also, read SL_partial once after the loop right where it is used, rather
> than re-reading it on every iteration.
>
> No functional change.
>
> Signed-off-by: Hao Li <hao.li@linux.dev>
> ---
Looks good to me (with Vlastimil's suggestions adjusted),
Reviewed-by: Harry Yoo (Meta) <harry@kernel.org>
> mm/slub.c | 95 ++++++++++++++++++++++++++++---------------------------
> 1 file changed, 49 insertions(+), 46 deletions(-)
>
> diff --git a/mm/slub.c b/mm/slub.c
> index b0cd0572e2f2..e20375307770 100644
> --- a/mm/slub.c
> +++ b/mm/slub.c
> @@ -5748,76 +5748,79 @@ static void __slab_free(struct kmem_cache *s, struct slab *slab,
[...]
> + /*
> + * The slab might need to be taken off (due to becoming empty)
> + * or added to (due to not being full anymore) the partial
> + * list.
> + *
> + * Speculatively acquire list_lock before calling cmpxchg(), as
> + * performing cmpxchg() prior to lock acquisition races with
> + * concurrent paths, such as the shrinker.
nit: it's bit weird to mention shrinkers specifically?
--
Cheers,
Harry / Hyeonggon
next prev parent reply other threads:[~2026-09-14 13:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-24 12:19 [RFC PATCH 0/2] mm/slub: reduce list_lock contention with slab parking Hao Li
2026-08-24 12:25 ` [RFC PATCH 1/2] mm/slub: make the case handling in __slab_free() easier to follow Hao Li
2026-08-24 12:25 ` [RFC PATCH 2/2] mm/slub: introduce slab parking to reduce list_lock contention Hao Li
2026-09-07 13:38 ` Vlastimil Babka (SUSE)
2026-09-07 16:19 ` Pedro Falcato
2026-09-11 13:06 ` Hao Li
2026-09-15 7:43 ` Vlastimil Babka (SUSE)
2026-09-16 3:05 ` Hao Li
2026-09-16 8:01 ` Vlastimil Babka (SUSE)
2026-09-17 9:13 ` Hao Li
2026-09-16 13:50 ` Harry Yoo
2026-09-17 9:42 ` Hao Li
2026-09-04 16:04 ` [RFC PATCH 1/2] mm/slub: make the case handling in __slab_free() easier to follow Vlastimil Babka (SUSE)
2026-09-07 2:55 ` Hao Li
2026-09-14 13:39 ` Harry Yoo [this message]
2026-09-16 14:00 ` Hao Li
2026-08-27 16:24 ` [RFC PATCH 0/2] mm/slub: reduce list_lock contention with slab parking Pedro Falcato
2026-08-30 14:59 ` Hao Li
2026-09-07 13:44 ` Vlastimil Babka (SUSE)
2026-09-11 11:24 ` Hao Li
2026-09-15 7:10 ` Vlastimil Babka (SUSE)
2026-09-16 12:58 ` Hao Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aqf4IsztnhrXBocx@thinkstation \
--to=harry@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cl@gentwo.org \
--cc=hao.li@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=vbabka@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.