mm-migrate-exclude-hugetlb-folios-from-mthp_stat_nr_anon-accounting.patch removed from -mm tree
The quilt patch titled
Subject: mm/migrate: exclude hugetlb folios from MTHP_STAT_NR_ANON accounting
has been removed from the -mm tree. Its filename was
mm-migrate-exclude-hugetlb-folios-from-mthp_stat_nr_anon-accounting.patch
This patch was dropped because it was merged into the mm-hotfixes-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Nico Pache <[email protected]>
Subject: mm/migrate: exclude hugetlb folios from MTHP_STAT_NR_ANON accounting
Date: Fri, 17 Jul 2026 00:45:00 -0600
__folio_migrate_mapping() increments MTHP_STAT_NR_ANON for the destination folio when folio_test_anon(folio) && folio_test_large(folio) is true. However, hugetlb folios satisfy both conditions despite having a completely separate accounting system — they use hugetlb_add_anon_rmap() which does not touch mTHP stats, and their free path also bypasses the mTHP decrement in __free_pages_prepare().
This causes MTHP_STAT_NR_ANON to be incremented on each hugetlb migration without a corresponding decrement, permanently inflating the nr_anon counter.
Add a !folio_test_hugetlb() check to __folio_migrate_mapping() so that only actual mTHP folios are counted.
---
mm/migrate.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
mm/migrate.c renamed from mm/migrate.c~mm-migrate-exclude-hugetlb-folios-from-mthp_stat_nr_anon-accounting +2 -1
@@ -590,7 +590,8 @@ static int __folio_migrate_mapping(struc/* No turning back from here */ newfolio->index = folio->index; newfolio->mapping = folio->mapping; -if (folio_test_anon (folio) &&folio_test_large (folio)) +if (folio_test_anon (folio) &&folio_test_large (folio) && + !folio_test_hugetlb (folio))mod_mthp_stat (folio_order (folio),MTHP_STAT_NR_ANON ,1 );if (folio_test_swapbacked (folio))__folio_set_swapbacked (newfolio);
_
Patches currently in -mm which might be from [email protected] are