Re: [RFC PATCH v2 2/8] migrate: implement migrate_misplaced_folios_batch

From: Bharata B Rao
Date: Fri Oct 03 2025 - 07:03:44 EST


On 03-Oct-25 4:06 PM, Jonathan Cameron wrote:
> On Wed, 10 Sep 2025 20:16:47 +0530
> Bharata B Rao <bharata@xxxxxxx> wrote:
>
>> From: Gregory Price <gourry@xxxxxxxxxx>
>>
>> A common operation in tiering is to migrate multiple pages at once.
>> The migrate_misplaced_folio function requires one call for each
>> individual folio. Expose a batch-variant of the same call for use
>> when doing batch migrations.
>>
> I probably missed an earlier discussion of this but what does the
> _batch postfix add over the plural (folios)?

https://lore.kernel.org/linux-mm/15744682-72ea-472f-9af1-50c3494c0b78@xxxxxxxxxx/

>
>> Signed-off-by: Gregory Price <gourry@xxxxxxxxxx>
>> Signed-off-by: Bharata B Rao <bharata@xxxxxxx>
>> ---
>> include/linux/migrate.h | 6 ++++++
>> mm/migrate.c | 31 +++++++++++++++++++++++++++++++
>> 2 files changed, 37 insertions(+)
>>
>> diff --git a/include/linux/migrate.h b/include/linux/migrate.h
>> index acadd41e0b5c..0593f5869be8 100644
>> --- a/include/linux/migrate.h
>> +++ b/include/linux/migrate.h
>> @@ -107,6 +107,7 @@ static inline int migrate_huge_page_move_mapping(struct address_space *mapping,
>> int migrate_misplaced_folio_prepare(struct folio *folio,
>> struct vm_area_struct *vma, int node);
>> int migrate_misplaced_folio(struct folio *folio, int node);
>> +int migrate_misplaced_folios_batch(struct list_head *foliolist, int node);
>> #else
>> static inline int migrate_misplaced_folio_prepare(struct folio *folio,
>> struct vm_area_struct *vma, int node)
>> @@ -117,6 +118,11 @@ static inline int migrate_misplaced_folio(struct folio *folio, int node)
>> {
>> return -EAGAIN; /* can't migrate now */
>> }
>> +static inline int migrate_misplaced_folios_batch(struct list_head *foliolist,
>> + int node)
>> +{
>> + return -EAGAIN; /* can't migrate now */
>> +}
>> #endif /* CONFIG_NUMA_BALANCING */
>>
>> #ifdef CONFIG_MIGRATION
>> diff --git a/mm/migrate.c b/mm/migrate.c
>> index 7e356c0b1b5a..1268a95eda0e 100644
>> --- a/mm/migrate.c
>> +++ b/mm/migrate.c
>> @@ -2714,5 +2714,36 @@ int migrate_misplaced_folio(struct folio *folio, int node)
>> BUG_ON(!list_empty(&migratepages));
>> return nr_remaining ? -EAGAIN : 0;
>> }
>> +
>> +/*
>
> Kernel-doc perhaps appropriate?

Probably yes, will take care in next iteration.

Thanks for looking into this patchset.

Regards,
Bharata.