On 2023/1/29 11:01, Huang, Ying wrote:
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".
Will do.
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.
will do
+ * 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.
will do
thanks for your review.
Best Regards.
Wandun
+ */
+ if (rc_gather < 0 && rc_gather != -ENOMEM)
goto out;
again:
nr_pages = 0;
Best Regards,
Huang, Ying
.