Re: [PATCH 1/4] mm/compaction: stop recording free page order in page->private

From: Vlastimil Babka (SUSE)

Date: Mon Jun 29 2026 - 10:28:58 EST


On 6/29/26 04:56, Zi Yan wrote:
> Commit 733aea0b3a7bb ("mm/compaction: add support for >0 order folio
> memory compaction.") stores isolated free pages in an array indexed by free
> page orders, it is no longer needed to store the order in each page's
> ->private field. And there is no code using the stored order. Stop doing
> that.

Ah, great observation. Cool.

> It also prepares for an upcoming change that ensures subpage->private is
> zero at page free time and the removal of set_page_private(0) from
> prep_compound_tail(). In alloc_contig_frozen_range_noprof(),
> isolate_freepages_range() is used to grab free pages from buddy allocator
> and it leaves the aforementioned page->private set until
> either split_free_frozen_pages() or prep_new_page() is called. That
> triggers the upcoming subpage->private nonzero check along once
> set_page_private(0) is removed from prep_compound_tail(), which is called
> via prep_new_page().

I'm not sure it needs to be said here (or in such detail?)

> Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>

Reviewed-by: Vlastimil Babka (SUSE) <vbabka@xxxxxxxxxx>

> ---
> mm/compaction.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/mm/compaction.c b/mm/compaction.c
> index b776f35ad020..349838cc6c19 100644
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -644,7 +644,6 @@ static unsigned long isolate_freepages_block(struct compact_control *cc,
> isolated = __isolate_free_page(page, order);
> if (!isolated)
> break;
> - set_page_private(page, order);
>
> nr_scanned += isolated - 1;
> total_isolated += isolated;
> @@ -1617,7 +1616,6 @@ static void fast_isolate_freepages(struct compact_control *cc)
> /* Isolate the page if available */
> if (page) {
> if (__isolate_free_page(page, order)) {
> - set_page_private(page, order);
> nr_isolated = 1 << order;
> nr_scanned += nr_isolated - 1;
> total_isolated += nr_isolated;
> @@ -1846,7 +1844,6 @@ static struct folio *compaction_alloc_noprof(struct folio *src, unsigned long da
> size >>= 1;
>
> list_add(&freepage[size].lru, &cc->freepages[start_order]);
> - set_page_private(&freepage[size], start_order);
> }
> dst = (struct folio *)freepage;
>
>