Re: [PATCH v6 1/4] mm: swap: introduce swap tier infrastructure
From: YoungJun Park
Date: Tue May 26 2026 - 02:28:13 EST
On Tue, May 26, 2026 at 05:49:15AM +0800, Baoquan He wrote:
> On 04/21/26 at 02:53pm, Youngjun Park wrote:
> > This patch introduces the "Swap tier" concept, which serves as an
> > abstraction layer for managing swap devices based on their performance
> > characteristics (e.g., NVMe, HDD, Network swap).
> >
> > Swap tiers are user-named groups representing priority ranges.
> > Tier names must consist of alphanumeric characters and underscores.
> > These tiers collectively cover the entire priority space from -1
> > (`DEF_SWAP_PRIO`) to `SHRT_MAX`.
> >
> > To configure tiers, a new sysfs interface is exposed at
> > /sys/kernel/mm/swap/tiers. The input parser evaluates commands from
> > left to right and supports batch input, allowing users to add or remove
> > multiple tiers in a single write operation.
> >
> > Tier management enforces continuous priority ranges anchored by start
> > priorities. Operations trigger range splitting or merging, but overwriting
> > start priorities is forbidden. Merging expands lower tiers upwards to
> > preserve configured start priorities, except when removing `DEF_SWAP_PRIO`,
> > which merges downwards.
> >
> > Suggested-by: Chris Li <chrisl@xxxxxxxxxx>
> > Signed-off-by: Youngjun Park <youngjun.park@xxxxxxx>
>
> This looks good to me.
>
> Reviewed-by: Baoquan He <baoquan.he@xxxxxxxxx>
>
> While there's only one tiny concern, please see the inline comment.
>
> > diff --git a/mm/swap_tier.c b/mm/swap_tier.c
> > new file mode 100644
> > index 000000000000..9490e891c5fe
> > --- /dev/null
> > +++ b/mm/swap_tier.c
> > @@ -0,0 +1,302 @@
> ......
> > +/*
> > + * Naming Convention:
> > + * swap_tiers_*() - Public/exported functions
> > + * swap_tier_*() - Private/internal functions
> > + */
> > +
> > +static bool swap_tier_is_active(void)
> > +{
> > + return !list_empty(&swap_tier_active_list) ? true : false;
>
> The above line seems like generated by AI. Whatever else I have seen is
> "return !list_empty(&swap_tier_active_list);" which is enough.
Oops, it is generated by me. My coding style.
You are right. I will remove the ternary operator.
Best regards,
Youngjun Park