in shmem_writepage, we have to split the huge page when moving pages from page cache to swap because we don't support huge page in swap yet. Signed-off-by: Ning Qu <quning@xxxxxxxxx> --- mm/shmem.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mm/shmem.c b/mm/shmem.c index 8fe17dd..68a0e1d 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -898,6 +898,13 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) swp_entry_t swap; pgoff_t index; + /* TODO: we have to break the huge page at this point, + * since we have no idea how to recover a huge page from + * swap. + */ + if (PageTransCompound(page)) + split_huge_page(compound_trans_head(page)); + BUG_ON(!PageLocked(page)); mapping = page->mapping; index = page->index; @@ -946,7 +953,7 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) if (shmem_falloc) goto redirty; } - clear_highpage(page); + clear_pagecache_page(page); flush_dcache_page(page); SetPageUptodate(page); } -- 1.8.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>