On Fri, Dec 11, 2020 at 12:19:50PM +0800, Muchun Song wrote: > +++ b/mm/filemap.c > @@ -207,7 +207,7 @@ static void unaccount_page_cache_page(struct address_space *mapping, > if (PageTransHuge(page)) > __dec_lruvec_page_state(page, NR_SHMEM_THPS); > } else if (PageTransHuge(page)) { > - __dec_lruvec_page_state(page, NR_FILE_THPS); > + __mod_lruvec_page_state(page, NR_FILE_THPS, -HPAGE_PMD_NR); + __mod_lruvec_page_state(page, NR_FILE_THPS, -nr); > +++ b/mm/huge_memory.c > @@ -2748,7 +2748,8 @@ int split_huge_page_to_list(struct page *page, struct list_head *list) > if (PageSwapBacked(head)) > __dec_lruvec_page_state(head, NR_SHMEM_THPS); > else > - __dec_lruvec_page_state(head, NR_FILE_THPS); > + __mod_lruvec_page_state(head, NR_FILE_THPS, > + -HPAGE_PMD_NR); + __mod_lruvec_page_state(head, NR_FILE_THPS, + -thp_nr_pages(head));