mm/compaction: set compact_cached_free_pfn correctly in update_pageblock_skip
authorKemeng Shi <shikemeng@huaweicloud.com>
Thu, 3 Aug 2023 09:48:58 +0000 (17:48 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 21 Aug 2023 20:37:39 +0000 (13:37 -0700)
Patch series "Fixes and cleanups to compaction", v2.

This series contains random fixes and cleanups to free page isolation in
compaction.  This is based on another compact series[1].  More details can
be found in respective patches.

This patch (of 4):

We will set skip to page block of block_start_pfn, it's more reasonable to
set compact_cached_free_pfn to page block before the block_start_pfn.

Link: https://lkml.kernel.org/r/20230803094901.2915942-1-shikemeng@huaweicloud.com
Link: https://lkml.kernel.org/r/20230803094901.2915942-2-shikemeng@huaweicloud.com
Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Kemeng Shi <shikemeng@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/compaction.c

index c4d3a31..6e0c745 100644 (file)
@@ -1717,7 +1717,8 @@ static void isolate_freepages(struct compact_control *cc)
 
                /* Update the skip hint if the full pageblock was scanned */
                if (isolate_start_pfn == block_end_pfn)
-                       update_pageblock_skip(cc, page, block_start_pfn);
+                       update_pageblock_skip(cc, page, block_start_pfn -
+                                             pageblock_nr_pages);
 
                /* Are enough freepages isolated? */
                if (cc->nr_freepages >= cc->nr_migratepages) {