From: Matthew Wilcox (Oracle) Date: Fri, 16 Oct 2020 03:05:56 +0000 (-0700) Subject: mm/vmscan: allow arbitrary sized pages to be paged out X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=3efe62e466958a1e59e68e0faa5c66b5b99b17ce;p=linux.git mm/vmscan: allow arbitrary sized pages to be paged out Remove the assumption that a compound page has HPAGE_PMD_NR pins from the page cache. Signed-off-by: Matthew Wilcox (Oracle) Signed-off-by: Andrew Morton Reviewed-by: SeongJae Park Acked-by: Kirill A. Shutemov Acked-by: "Huang, Ying" Link: https://lkml.kernel.org/r/20200908195539.25896-12-willy@infradead.org Signed-off-by: Linus Torvalds --- diff --git a/mm/vmscan.c b/mm/vmscan.c index 879fb57c50456..fc4dee9b91f84 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -725,8 +725,7 @@ static inline int is_page_cache_freeable(struct page *page) * that isolated the page, the page cache and optional buffer * heads at page->private. */ - int page_cache_pins = PageTransHuge(page) && PageSwapCache(page) ? - HPAGE_PMD_NR : 1; + int page_cache_pins = thp_nr_pages(page); return page_count(page) - page_has_private(page) == 1 + page_cache_pins; }