mm-fix-for-negative-counter-nr_file_hugepages.patch removed from -mm tree
The quilt patch titled
Subject: mm: fix for negative counter: nr_file_hugepages
has been removed from the -mm tree. Its filename was
mm-fix-for-negative-counter-nr_file_hugepages.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: Stefan Roesch <[email protected]>
Subject: mm: fix for negative counter: nr_file_hugepages
Date: Mon, 6 Nov 2023 10:19:18 -0800
While qualifiying the 6.4 release, the following warning was detected in messages:
vmstat_refresh: nr_file_hugepages -15664
The warning is caused by the incorrect updating of the NR_FILE_THPS counter in the function split_huge_page_to_list. The if case is checking for folio_test_swapbacked, but the else case is missing the check for folio_test_pmd_mappable. The other functions that manipulate the counter like __filemap_add_folio and filemap_unaccount_folio have the corresponding check.
I have a test case, which reproduces the problem. It can be found here:
https://github.com/sroeschus/testcase/blob/main/vmstat_refresh/madv.c
The test case reproduces on an XFS filesystem. Running the same test case on a BTRFS filesystem does not reproduce the problem.
AFAIK version 6.1 until 6.6 are affected by this problem.
---
mm/huge_memory.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
mm/huge_memory.c renamed from mm/huge_memory.c~mm-fix-for-negative-counter-nr_file_hugepages +9 -7
@@ -2769,13 +2769,15 @@ int split_huge_page_to_list(struct pageint nr =folio_nr_pages (folio);xas_split (&xas, folio,folio_order (folio)); -if (folio_test_swapbacked (folio)) { -__lruvec_stat_mod_folio (folio,NR_SHMEM_THPS , - -nr); - }else { -__lruvec_stat_mod_folio (folio,NR_FILE_THPS , - -nr); -filemap_nr_thps_dec (mapping); +if (folio_test_pmd_mappable (folio)) { +if (folio_test_swapbacked (folio)) { +__lruvec_stat_mod_folio (folio, +NR_SHMEM_THPS , -nr); + }else { +__lruvec_stat_mod_folio (folio, +NR_FILE_THPS , -nr); +filemap_nr_thps_dec (mapping); + } } }
_
Patches currently in -mm which might be from [email protected] are