Re: [PATCH v3 02/13] mm, swap: fold swap_info_get_cont in the only caller

Baoquan He
2025-01-09T04:05:45Z

On 12/31/24 at 01:46am, Kairui Song wrote:
> From: Kairui Song <kasong@tencent.com>
>
> The name of the function is confusing, and the code is much easier to
> follow after folding, also rename the confusing naming "p" to more
> meaningful "si".
>
> Signed-off-by: Kairui Song <kasong@tencent.com>
> ---
> mm/swapfile.c | 39 +++++++++++++++------------------------
> 1 file changed, 15 insertions(+), 24 deletions(-)

Reviewed-by: Baoquan He <bhe@redhat.com>

>
> diff --git a/mm/swapfile.c b/mm/swapfile.c
> index f8002f110104..574059158627 100644
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -1375,22 +1375,6 @@ static struct swap_info_struct *_swap_info_get(swp_entry_t entry)
> return NULL;
> }
>
> -static struct swap_info_struct *swap_info_get_cont(swp_entry_t entry,
> - struct swap_info_struct *q)
> -{
> - struct swap_info_struct *p;
> -
> - p = _swap_info_get(entry);
> -
> - if (p != q) {
> - if (q != NULL)
> - spin_unlock(&q->lock);
> - if (p != NULL)
> - spin_lock(&p->lock);
> - }
> - return p;
> -}
> -
> static unsigned char __swap_entry_free_locked(struct swap_info_struct *si,
> unsigned long offset,
> unsigned char usage)
> @@ -1687,14 +1671,14 @@ static int swp_entry_cmp(const void *ent1, const void *ent2)
>
> void swapcache_free_entries(swp_entry_t *entries, int n)
> {
> - struct swap_info_struct *p, *prev;
> + struct swap_info_struct *si, *prev;
> int i;
>
> if (n <= 0)
> return;
>
> prev = NULL;
> - p = NULL;
> + si = NULL;
>
> /*
> * Sort swap entries by swap device, so each lock is only taken once.
> @@ -1704,13 +1688,20 @@ void swapcache_free_entries(swp_entry_t *entries, int n)
> if (nr_swapfiles > 1)
> sort(entries, n, sizeof(entries[0]), swp_entry_cmp, NULL);
> for (i = 0; i < n; ++i) {
> - p = swap_info_get_cont(entries[i], prev);
> - if (p)
> - swap_entry_range_free(p, entries[i], 1);
> - prev = p;
> + si = _swap_info_get(entries[i]);
> +
> + if (si != prev) {
> + if (prev != NULL)
> + spin_unlock(&prev->lock);
> + if (si != NULL)
> + spin_lock(&si->lock);
> + }
> + if (si)
> + swap_entry_range_free(si, entries[i], 1);
> + prev = si;
> }
> - if (p)
> - spin_unlock(&p->lock);
> + if (si)
> + spin_unlock(&si->lock);
> }
>
> int __swap_count(swp_entry_t entry)
> --
> 2.47.1
>
>