On Thu, 12 May 2022 10:27:44 +0800 Miaohe Lin <linmiaohe@xxxxxxxxxx> wrote: > On 2022/5/12 9:47, Rei Yamamoto wrote: >> On Wed, 11 May 2022 17:26:16 Miaohe Lin wrote: >>> On 2022/5/11 15:07, Rei Yamamoto wrote: >>>> On Wed, 11 May 2022 14:25:34 Miaohe Lin wrote: >>>>> On 2022/5/11 12:43, Rei Yamamoto wrote: >>>>>> Prevent returning a pfn outside the target zone in case that not >>>>>> aligned with pageblock boundary. >>>>>> Otherwise isolate_migratepages_block() would handle pages not in >>>>>> the target zone. >>>>>> >>>>> >>>>> IIUC, the sole caller isolate_migratepages will ensure the pfn won't outside >>>>> the target zone. So the below code change might not be necessary. Or am I miss >>>>> something ? >>>> >>>> While block_start_pfn is ensured, this variable is not used as the argument for >>>> isolate_migratepages_block(): >>>> ----- >>>> static isolate_migrate_t isolate_migratepages(struct compact_control *cc) >>>> { >>>> : >>>> low_pfn = fast_find_migrateblock(cc); >>>> block_start_pfn = pageblock_start_pfn(low_pfn); >>>> if (block_start_pfn < cc->zone->zone_start_pfn) >>>> block_start_pfn = cc->zone->zone_start_pfn; <--- block_start_pfn is ensured not outside >>>> the target zone >>>> : >>>> block_end_pfn = pageblock_end_pfn(low_pfn); >>>> : >>>> for (; block_end_pfn <= cc->free_pfn; >>>> fast_find_block = false, >>>> cc->migrate_pfn = low_pfn = block_end_pfn, >>>> block_start_pfn = block_end_pfn, >>>> block_end_pfn += pageblock_nr_pages) { >>>> : >>>> if (isolate_migratepages_block(cc, low_pfn, block_end_pfn, <--- low_pfn is passed as >>>> the argument >>> >>> Sorry, I think you're right. And could you please add the runtime effect of this issue? >>> >>> Anyway, this patch looks good to me now. Thanks! >> >> Thank you for your review. >> The runtime effect is that compaction become unintended behavior. >> For example, pages not in the target zone are added to cc->migratepages list in isolate_migratepages_block(). >> As a result, pages migrate between nodes unintentionally. > > Many thanks for clarifying. :) Is this worth a Fixes tag or even CC stable? > > Thanks! Thank you for your reply. If add a Fixes tag, I think the following commit: Fixes: 70b4459 ("mm, compaction: use free lists to quickly locate a migration source") Andrew, how do you think about this? Thanks, Rei