On Mon, Jun 30, 2014 at 02:08:11PM -0700, Hugh Dickins wrote: > Under shmem swapping load, I sometimes hit the VM_BUG_ON_PAGE(!PageLRU) > in isolate_lru_pages() at mm/vmscan.c:1281! > > Commit 2457aec63745 ("mm: non-atomically mark page accessed during page > cache allocation where possible") looks like interrupted work-in-progress. > > mm/filemap.c's call to init_page_accessed() is fine, but not mm/shmem.c's > - shmem_write_begin() is clearly wrong to use it after shmem_getpage(), > when the page is always visible in radix_tree, and often already on LRU. > > Revert change to shmem_write_begin(), and use init_page_accessed() or > mark_page_accessed() appropriately for SGP_WRITE in shmem_getpage_gfp(). > > SGP_WRITE also covers shmem_symlink(), which did not mark_page_accessed() > before; but since many other filesystems use [__]page_symlink(), which did > and does mark the page accessed, consider this as rectifying an oversight. > > Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx> Acked-by: Mel Gorman <mgorman@xxxxxxx> -- Mel Gorman SUSE Labs -- 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>