On Tue, Sep 12, 2023 at 12:28:12PM -0400, Zi Yan wrote: > @@ -1439,7 +1478,8 @@ fast_isolate_around(struct compact_control *cc, unsigned long pfn) > if (!page) > return; > > - isolate_freepages_block(cc, &start_pfn, end_pfn, &cc->freepages, 1, false); > + isolate_freepages_block(cc, &start_pfn, end_pfn, &freelist, 1, false); > + sort_free_pages(&freelist, cc->freepages); Can you make isolate_freepages_block() put the pages directly into a sorted struct free_list? AFAICS, the only place that doesn't technically need it is isolate_freepages_range(). But that's then also the sole caller of split_map_pages(), which can be made to work on struct free_list too without notable overhead.