Re: [PATCH 2/4] mm, swap: Move setup_swap_clusters_info() after SWP_SOLIDSTATE initialization
From: Kemeng Shi
Date: Mon Jul 20 2026 - 22:20:50 EST
在 2026/7/20 23:54:07, Luiz Capitulino 写道:
> On 2026-07-20 03:13, Kemeng Shi wrote:
>> In setup_swap_clusters_info(), SWP_SOLIDSTATE is used to decide
>> global_cluster allocation. Move setup_swap_clusters_info() after
>> SWP_SOLIDSTATE initialization to avoid unneeded global_cluster
>> allocation.
>>
>> Fixes: 451c6326105b2 ("mm, swap: clean up swapon process and locking")
>> Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx>
>
> I was about to send the same fix :) (one nit below)
What a coincidence :)>
>> ---
>> mm/swapfile.c | 13 ++++++++-----
>> 1 file changed, 8 insertions(+), 5 deletions(-)
>>
>> diff --git a/mm/swapfile.c b/mm/swapfile.c
>> index d29062d9c3cd..81c4040912be 100644
>> --- a/mm/swapfile.c
>> +++ b/mm/swapfile.c
>> @@ -3607,11 +3607,6 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
>> maxpages = si->max;
>> - /* Set up the swap cluster info */
>> - error = setup_swap_clusters_info(si, swap_header, maxpages);
>> - if (error)
>> - goto bad_swap_unlock_inode;
>> -
>> if (si->bdev && bdev_stable_writes(si->bdev))
>> si->flags |= SWP_STABLE_WRITES;
>> @@ -3625,6 +3620,14 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
>> inced_nr_rotate_swap = true;
>> }
>> + /*
>> + * Set up the swap cluster info. SWP_SOLIDSTATE is used for
>> + * global_cluster allocation
>> + */
>
> Maybe something like:
>
> /*
> * Set up the swap cluster info after SWP_ flags handling as
> * setup_swap_clusters_info() checks SWP_SOLIDSTATE.
> */
Thanks for feedback. I will do this in next version.>
> As it's minor:
>
> Reviewed-by: Luiz Capitulino <luizcap@xxxxxxxxxx>
>
>> + error = setup_swap_clusters_info(si, swap_header, maxpages);
>> + if (error)
>> + goto bad_swap_unlock_inode;
>> +
>> if ((swap_flags & SWAP_FLAG_DISCARD) &&
>> si->bdev && bdev_max_discard_sectors(si->bdev)) {
>> /*
>