Commit 820c4e2e authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle)
Browse files

mm/vmscan: Free non-shmem folios without splitting them



We have to allocate memory in order to split a file-backed folio, so
it's not a good idea to split them in the memory freeing path.  It also
doesn't work for XFS because pages have an extra reference count from
page_has_private() and split_huge_page() expects that reference to have
already been removed.  Unfortunately, we still have to split shmem THPs
because we can't handle swapping out an entire THP yet.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
parent 84fbbe21
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1739,8 +1739,8 @@ static unsigned int shrink_page_list(struct list_head *page_list,
				/* Adding to swap updated mapping */
				mapping = page_mapping(page);
			}
		} else if (unlikely(PageTransHuge(page))) {
			/* Split file THP */
		} else if (PageSwapBacked(page) && PageTransHuge(page)) {
			/* Split shmem THP */
			if (split_folio_to_list(folio, page_list))
				goto keep_locked;
		}