[PATCH 09/15] mm/z3fold: use zpdesc in z3fold_compact_page and do_compact_page

alexs
2024-06-21T05:42:45Z

The main purpose is converting page->private to zpdesc->zppage_flag too.

Signed-off-by: Alex Shi <alexs@kernel.org>
---
mm/z3fold.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/mm/z3fold.c b/mm/z3fold.c
index 97580e2224c2..3d36448885c9 100644
--- a/mm/z3fold.c
+++ b/mm/z3fold.c
@@ -691,12 +691,12 @@ static struct z3fold_header *compact_single_buddy(struct z3fold_header *zhdr)
/* Has to be called with lock held */
static int z3fold_compact_page(struct z3fold_header *zhdr)
{
- struct page *page = virt_to_page(zhdr);
+ struct zpdesc *zpdesc = page_zpdesc(virt_to_page(zhdr));

- if (test_bit(MIDDLE_CHUNK_MAPPED, &page->private))
+ if (test_bit(MIDDLE_CHUNK_MAPPED, &zpdesc->zppage_flag))
return 0; /* can't move middle chunk, it's used */

- if (unlikely(PageIsolated(page)))
+ if (unlikely(PageIsolated(zpdesc_page(zpdesc))))
return 0;

if (zhdr->middle_chunks == 0)
@@ -739,14 +739,13 @@ static int z3fold_compact_page(struct z3fold_header *zhdr)
static void do_compact_page(struct z3fold_header *zhdr, bool locked)
{
struct z3fold_pool *pool = zhdr_to_pool(zhdr);
- struct page *page;
+ struct zpdesc *zpdesc = page_zpdesc(virt_to_page(zhdr));

- page = virt_to_page(zhdr);
if (locked)
WARN_ON(z3fold_page_trylock(zhdr));
else
z3fold_page_lock(zhdr);
- if (WARN_ON(!test_and_clear_bit(NEEDS_COMPACTING, &page->private))) {
+ if (WARN_ON(!test_and_clear_bit(NEEDS_COMPACTING, &zpdesc->zppage_flag))) {
z3fold_page_unlock(zhdr);
return;
}
@@ -757,8 +756,8 @@ static void do_compact_page(struct z3fold_header *zhdr, bool locked)
if (put_z3fold_locked(zhdr))
return;

- if (test_bit(PAGE_STALE, &page->private) ||
- test_and_set_bit(PAGE_CLAIMED, &page->private)) {
+ if (test_bit(PAGE_STALE, &zpdesc->zppage_flag) ||
+ test_and_set_bit(PAGE_CLAIMED, &zpdesc->zppage_flag)) {
z3fold_page_unlock(zhdr);
return;
}
@@ -766,7 +765,7 @@ static void do_compact_page(struct z3fold_header *zhdr, bool locked)
if (!zhdr->foreign_handles && buddy_single(zhdr) &&
zhdr->mapped_count == 0 && compact_single_buddy(zhdr)) {
if (!put_z3fold_locked(zhdr)) {
- clear_bit(PAGE_CLAIMED, &page->private);
+ clear_bit(PAGE_CLAIMED, &zpdesc->zppage_flag);
z3fold_page_unlock(zhdr);
}
return;
@@ -774,7 +773,7 @@ static void do_compact_page(struct z3fold_header *zhdr, bool locked)

z3fold_compact_page(zhdr);
add_to_unbuddied(pool, zhdr);
- clear_bit(PAGE_CLAIMED, &page->private);
+ clear_bit(PAGE_CLAIMED, &zpdesc->zppage_flag);
z3fold_page_unlock(zhdr);
}

--
2.43.0