diff options
author | Weijie Yang <weijie.yang@samsung.com> | 2013-11-12 18:07:52 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-12 22:09:08 -0500 |
commit | b349acc76b7f65400b85abd09a5379ddd6fa5a97 (patch) | |
tree | e21180e37fd7a9af677f4dafdeec0754a9e7bf5b /mm | |
parent | c4a391b53a72d2df4ee97f96f78c1d5971b47489 (diff) |
mm/zswap: avoid unnecessary page scanning
Add SetPageReclaim() before __swap_writepage() so that page can be moved
to the tail of the inactive list, which can avoid unnecessary page
scanning as this page was reclaimed by swap subsystem before.
Signed-off-by: Weijie Yang <weijie.yang@samsung.com>
Reviewed-by: Bob Liu <bob.liu@oracle.com>
Reviewed-by: Minchan Kim <minchan@kernel.org>
Acked-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/zswap.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/zswap.c b/mm/zswap.c index d93510c6aa2d..001474c1a594 100644 --- a/mm/zswap.c +++ b/mm/zswap.c | |||
@@ -556,6 +556,9 @@ static int zswap_writeback_entry(struct zbud_pool *pool, unsigned long handle) | |||
556 | SetPageUptodate(page); | 556 | SetPageUptodate(page); |
557 | } | 557 | } |
558 | 558 | ||
559 | /* move it to the tail of the inactive list after end_writeback */ | ||
560 | SetPageReclaim(page); | ||
561 | |||
559 | /* start writeback */ | 562 | /* start writeback */ |
560 | __swap_writepage(page, &wbc, end_swap_bio_write); | 563 | __swap_writepage(page, &wbc, end_swap_bio_write); |
561 | page_cache_release(page); | 564 | page_cache_release(page); |