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

Kairui Song
2024-12-24T14:39:41Z

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(-)

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