Messages in this thread | | | Date | Mon, 30 Jun 2014 23:00:33 +0100 | From | Mel Gorman <> | Subject | Re: [PATCH 1/2] shmem: fix init_page_accessed use to stop !PageLRU bug |
| |
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@google.com>
Acked-by: Mel Gorman <mgorman@suse.de>
-- Mel Gorman SUSE Labs
| |