Message ID | 20191017164223.2762148-3-songliubraving@fb.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fixes for THP in page cache | expand |
On Thu, Oct 17, 2019 at 9:42 AM Song Liu <songliubraving@fb.com> wrote: > > From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> > > Make sure split_huge_page_to_list() handle the state of shmem THP and > file THP properly. > > Fixes: 60fbf0ab5da1 ("mm,thp: stats for file backed THP") > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> > Tested-by: Song Liu <songliubraving@fb.com> > Signed-off-by: Song Liu <songliubraving@fb.com> Acked-by: Yang Shi <yang.shi@linux.alibaba.com> > --- > mm/huge_memory.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index c5cb6dcd6c69..13cc93785006 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -2789,8 +2789,13 @@ int split_huge_page_to_list(struct page *page, struct list_head *list) > ds_queue->split_queue_len--; > list_del(page_deferred_list(head)); > } > - if (mapping) > - __dec_node_page_state(page, NR_SHMEM_THPS); > + if (mapping) { > + if (PageSwapBacked(page)) > + __dec_node_page_state(page, NR_SHMEM_THPS); > + else > + __dec_node_page_state(page, NR_FILE_THPS); > + } > + > spin_unlock(&ds_queue->split_queue_lock); > __split_huge_page(page, list, end, flags); > if (PageSwapCache(head)) { > -- > 2.17.1 > >
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index c5cb6dcd6c69..13cc93785006 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2789,8 +2789,13 @@ int split_huge_page_to_list(struct page *page, struct list_head *list) ds_queue->split_queue_len--; list_del(page_deferred_list(head)); } - if (mapping) - __dec_node_page_state(page, NR_SHMEM_THPS); + if (mapping) { + if (PageSwapBacked(page)) + __dec_node_page_state(page, NR_SHMEM_THPS); + else + __dec_node_page_state(page, NR_FILE_THPS); + } + spin_unlock(&ds_queue->split_queue_lock); __split_huge_page(page, list, end, flags); if (PageSwapCache(head)) {