]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
mm/page_alloc: Move set_page_refcounted() to callers of __alloc_pages_direct_compact()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 14 Jun 2022 20:24:46 +0000 (16:24 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 3 Jan 2023 14:00:32 +0000 (09:00 -0500)
In preparation for allocating frozen pages, stop initialising the page
refcount in __alloc_pages_direct_compact().

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
mm/page_alloc.c

index 980ced03977705658b80e7c68ef697b2126999ed..e5985d627b447d04a1ba69910d647a9958fac215 100644 (file)
@@ -4516,7 +4516,6 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
        if (page) {
                struct zone *zone = page_zone(page);
 
-               set_page_refcounted(page);
                zone->compact_blockskip_flush = false;
                compaction_defer_reset(zone, order, true);
                count_vm_event(COMPACTSUCCESS);
@@ -5108,8 +5107,10 @@ restart:
                                                alloc_flags, ac,
                                                INIT_COMPACT_PRIORITY,
                                                &compact_result);
-               if (page)
+               if (page) {
+                       set_page_refcounted(page);
                        goto got_pg;
+               }
 
                /*
                 * Checks for costly allocations with __GFP_NORETRY, which
@@ -5191,8 +5192,10 @@ retry:
        /* Try direct compaction and then allocating */
        page = __alloc_pages_direct_compact(gfp_mask, order, alloc_flags, ac,
                                        compact_priority, &compact_result);
-       if (page)
+       if (page) {
+               set_page_refcounted(page);
                goto got_pg;
+       }
 
        /* Do not loop if specifically requested */
        if (gfp_mask & __GFP_NORETRY)