summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHillf Danton <dhillf@gmail.com>2012-01-10 15:07:59 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2012-01-10 16:30:44 -0800
commit31b8384a555d94c78e2ea2284a323cb985441f60 (patch)
tree6e9b3fc9d14e7bbd8c6c97a1277fd3e9b5034f5b
parente3a41a5ba9c2ab988b9f1442925109dca2382fd9 (diff)
downloadlinux-31b8384a555d94c78e2ea2284a323cb985441f60.tar.gz
linux-31b8384a555d94c78e2ea2284a323cb985441f60.tar.bz2
linux-31b8384a555d94c78e2ea2284a323cb985441f60.zip
mm: compaction: push isolate search base of compact control one pfn ahead
After isolated the current pfn will no longer be scanned and isolated if the next round is necessary, so push the isolate_migratepages search base of the given compact_control one step ahead. Signed-off-by: Hillf Danton <dhillf@gmail.com> Reviewed-by: Andrea Arcangeli <aarcange@redhat.com> Cc: Mel Gorman <mgorman@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/compaction.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/mm/compaction.c b/mm/compaction.c
index 1253d7ac332b..e6670c34eb49 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -365,8 +365,10 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
nr_isolated++;
/* Avoid isolating too much */
- if (cc->nr_migratepages == COMPACT_CLUSTER_MAX)
+ if (cc->nr_migratepages == COMPACT_CLUSTER_MAX) {
+ ++low_pfn;
break;
+ }
}
acct_isolated(zone, cc);