Chen Wandun <chenwandun@xxxxxxxxxx> writes: > migrate_hugetlbs returns -ENOMEM when no enough huge page, > however maybe there are still free small pages, so continue > to migrate for small pages. Better to replace "page" with "folio", and "small" with "non-hugetlb". > Signed-off-by: Chen Wandun <chenwandun@xxxxxxxxxx> > --- > mm/migrate.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index b971edbf32fc..c9d0d2058036 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1939,7 +1939,12 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, > > rc_gather = migrate_hugetlbs(from, get_new_page, put_new_page, private, > mode, reason, &stats, &ret_folios); > - if (rc_gather < 0) > + /* Maybe there are free small pages, continue to migrate. There may be free non-hugetlb folios available, continue to migrate. > + * Nowdays the only negtive return value of migrate_hugetlbs > + * is -ENOMEM, keep compatible for coming negtive return > + * value instead of ignore return value. This can be moved to patch description. > + */ > + if (rc_gather < 0 && rc_gather != -ENOMEM) > goto out; > again: > nr_pages = 0; Best Regards, Huang, Ying