[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z39LCmLFq873TBGn@MiWiFi-R3L-srv>
Date: Thu, 9 Jan 2025 12:05:30 +0800
From: Baoquan He <bhe@...hat.com>
To: Kairui Song <kasong@...cent.com>
Cc: linux-mm@...ck.org, Andrew Morton <akpm@...ux-foundation.org>,
Chris Li <chrisl@...nel.org>, Barry Song <v-songbaohua@...o.com>,
Ryan Roberts <ryan.roberts@....com>,
Hugh Dickins <hughd@...gle.com>,
Yosry Ahmed <yosryahmed@...gle.com>,
"Huang, Ying" <ying.huang@...ux.alibaba.com>,
Nhat Pham <nphamcs@...il.com>, Johannes Weiner <hannes@...xchg.org>,
Kalesh Singh <kaleshsingh@...gle.com>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 02/13] mm, swap: fold swap_info_get_cont in the only
caller
On 12/31/24 at 01:46am, Kairui Song wrote:
> From: Kairui Song <kasong@...cent.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@...cent.com>
> ---
> mm/swapfile.c | 39 +++++++++++++++------------------------
> 1 file changed, 15 insertions(+), 24 deletions(-)
Reviewed-by: Baoquan He <bhe@...hat.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
>
>
Powered by blists - more mailing lists