On 16 Oct 2023, at 11:41, Zi Yan wrote: > From: Zi Yan <ziy@xxxxxxxxxx> > > nr_failed was missing the large folio splits from migrate_pages_batch() > and can cause a mismatch between migrate_pages() return value and the > number of not migrated pages, i.e., when the return value of > migrate_pages() is 0, there are still pages left in the from page list. > It will happen when a non-PMD THP large folio fails to migrate due to > -ENOMEM and is split successfully but not all the split pages are not > migrated, migrate_pages_batch() would return non-zero, but > astats.nr_thp_split = 0. nr_failed would be 0 and returned to the caller > of migrate_pages(), but the not migrated pages are left in the from page > list without being added back to LRU lists. > > Fix it by adding a new nr_split counter for large folio splits and adding > it to nr_failed in migrate_page_sync() after migrate_pages_batch() is > done. > > Fixes: 2ef7dbb26990 ("migrate_pages: try migrate in batch asynchronously firstly") > Signed-off-by: Zi Yan <ziy@xxxxxxxxxx> > --- > include/trace/events/migrate.h | 24 ++++++++++++++---------- > mm/migrate.c | 15 +++++++++++---- > 2 files changed, 25 insertions(+), 14 deletions(-) Hi Andrew, If Ying is OK with this patch, it should place my previous fix: https://lore.kernel.org/linux-mm/20231009203231.1715845-2-zi.yan@xxxxxxxx/ -- Best Regards, Yan, Zi
Attachment:
signature.asc
Description: OpenPGP digital signature