aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/compaction.c7
-rw-r--r--mm/vmscan.c3
2 files changed, 8 insertions, 2 deletions
diff --git a/mm/compaction.c b/mm/compaction.c
index 47f717fa4233..a0e420207ebf 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -261,6 +261,7 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
261 unsigned long last_pageblock_nr = 0, pageblock_nr; 261 unsigned long last_pageblock_nr = 0, pageblock_nr;
262 unsigned long nr_scanned = 0, nr_isolated = 0; 262 unsigned long nr_scanned = 0, nr_isolated = 0;
263 struct list_head *migratelist = &cc->migratepages; 263 struct list_head *migratelist = &cc->migratepages;
264 isolate_mode_t mode = ISOLATE_ACTIVE|ISOLATE_INACTIVE;
264 265
265 /* Do not scan outside zone boundaries */ 266 /* Do not scan outside zone boundaries */
266 low_pfn = max(cc->migrate_pfn, zone->zone_start_pfn); 267 low_pfn = max(cc->migrate_pfn, zone->zone_start_pfn);
@@ -348,9 +349,11 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
348 continue; 349 continue;
349 } 350 }
350 351
352 if (!cc->sync)
353 mode |= ISOLATE_CLEAN;
354
351 /* Try isolate the page */ 355 /* Try isolate the page */
352 if (__isolate_lru_page(page, 356 if (__isolate_lru_page(page, mode, 0) != 0)
353 ISOLATE_ACTIVE|ISOLATE_INACTIVE, 0) != 0)
354 continue; 357 continue;
355 358
356 VM_BUG_ON(PageTransCompound(page)); 359 VM_BUG_ON(PageTransCompound(page));
diff --git a/mm/vmscan.c b/mm/vmscan.c
index ec6dbcb976d1..c007e78d7078 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1045,6 +1045,9 @@ int __isolate_lru_page(struct page *page, isolate_mode_t mode, int file)
1045 1045
1046 ret = -EBUSY; 1046 ret = -EBUSY;
1047 1047
1048 if ((mode & ISOLATE_CLEAN) && (PageDirty(page) || PageWriteback(page)))
1049 return ret;
1050
1048 if (likely(get_page_unless_zero(page))) { 1051 if (likely(get_page_unless_zero(page))) {
1049 /* 1052 /*
1050 * Be careful not to clear PageLRU until after we're 1053 * Be careful not to clear PageLRU until after we're