summaryrefslogtreecommitdiffstats
path: root/mm/compaction.c
diff options
context:
space:
mode:
authorHugh Dickins <hughd@google.com>2016-07-28 18:48:41 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-07-28 19:07:41 -0400
commit1d2047fefa20e49072f6a37a7f71544e8cace529 (patch)
tree0da9cd7348ee67586ea430e09190be88970923c3 /mm/compaction.c
parent7c7fd82556c61113b6327c9696b347a82b215072 (diff)
mm, compaction: don't isolate PageWriteback pages in MIGRATE_SYNC_LIGHT mode
At present MIGRATE_SYNC_LIGHT is allowing __isolate_lru_page() to isolate a PageWriteback page, which __unmap_and_move() then rejects with -EBUSY: of course the writeback might complete in between, but that's not what we usually expect, so probably better not to isolate it. When tested by stress-highalloc from mmtests, this has reduced the number of page migrate failures by 60-70%. Link: http://lkml.kernel.org/r/20160721073614.24395-2-vbabka@suse.cz Signed-off-by: Hugh Dickins <hughd@google.com> Signed-off-by: Vlastimil Babka <vbabka@suse.cz> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Mel Gorman <mgorman@techsingularity.net> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/compaction.c')
-rw-r--r--mm/compaction.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/compaction.c b/mm/compaction.c
index e5995f38d677..fee1118c8b94 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1200,7 +1200,7 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
1200 struct page *page; 1200 struct page *page;
1201 const isolate_mode_t isolate_mode = 1201 const isolate_mode_t isolate_mode =
1202 (sysctl_compact_unevictable_allowed ? ISOLATE_UNEVICTABLE : 0) | 1202 (sysctl_compact_unevictable_allowed ? ISOLATE_UNEVICTABLE : 0) |
1203 (cc->mode == MIGRATE_ASYNC ? ISOLATE_ASYNC_MIGRATE : 0); 1203 (cc->mode != MIGRATE_SYNC ? ISOLATE_ASYNC_MIGRATE : 0);
1204 1204
1205 /* 1205 /*
1206 * Start at where we last stopped, or beginning of the zone as 1206 * Start at where we last stopped, or beginning of the zone as