Decrease nr_thps counter in file's mapping to ensure that the page cache won't be dropped excessively on file write access if page has been already splitted. Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> Fixes: 09d91cda0e82 ("mm,thp: avoid writes to file with THP in pagecache") Fixes: 06d3eff62d9d ("mm/thp: fix node page state in split_huge_page_to_list()") --- I've analyzed the code a few times but either I missed something or the nr_thps counter is not decremented during the THP split on non-shmem file pages. --- mm/huge_memory.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index ec2bb93f7431..a6c2ba59abcd 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2709,10 +2709,12 @@ int split_huge_page_to_list(struct page *page, struct list_head *list) } spin_unlock(&ds_queue->split_queue_lock); if (mapping) { - if (PageSwapBacked(head)) + if (PageSwapBacked(head)) { __dec_node_page_state(head, NR_SHMEM_THPS); - else + } else { __dec_node_page_state(head, NR_FILE_THPS); + filemap_nr_thps_dec(mapping); + } } __split_huge_page(page, list, end, flags); -- 2.17.1