aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_isolation.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page_isolation.c')
-rw-r--r--mm/page_isolation.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/mm/page_isolation.c b/mm/page_isolation.c
index f4e17a57926a..5092e4ef00c8 100644
--- a/mm/page_isolation.c
+++ b/mm/page_isolation.c
@@ -66,7 +66,8 @@ out:
66 66
67 set_pageblock_migratetype(page, MIGRATE_ISOLATE); 67 set_pageblock_migratetype(page, MIGRATE_ISOLATE);
68 zone->nr_isolate_pageblock++; 68 zone->nr_isolate_pageblock++;
69 nr_pages = move_freepages_block(zone, page, MIGRATE_ISOLATE); 69 nr_pages = move_freepages_block(zone, page, MIGRATE_ISOLATE,
70 NULL);
70 71
71 __mod_zone_freepage_state(zone, -nr_pages, migratetype); 72 __mod_zone_freepage_state(zone, -nr_pages, migratetype);
72 } 73 }
@@ -88,7 +89,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
88 89
89 zone = page_zone(page); 90 zone = page_zone(page);
90 spin_lock_irqsave(&zone->lock, flags); 91 spin_lock_irqsave(&zone->lock, flags);
91 if (get_pageblock_migratetype(page) != MIGRATE_ISOLATE) 92 if (!is_migrate_isolate_page(page))
92 goto out; 93 goto out;
93 94
94 /* 95 /*
@@ -120,7 +121,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
120 * pageblock scanning for freepage moving. 121 * pageblock scanning for freepage moving.
121 */ 122 */
122 if (!isolated_page) { 123 if (!isolated_page) {
123 nr_pages = move_freepages_block(zone, page, migratetype); 124 nr_pages = move_freepages_block(zone, page, migratetype, NULL);
124 __mod_zone_freepage_state(zone, nr_pages, migratetype); 125 __mod_zone_freepage_state(zone, nr_pages, migratetype);
125 } 126 }
126 set_pageblock_migratetype(page, migratetype); 127 set_pageblock_migratetype(page, migratetype);
@@ -205,7 +206,7 @@ int undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
205 pfn < end_pfn; 206 pfn < end_pfn;
206 pfn += pageblock_nr_pages) { 207 pfn += pageblock_nr_pages) {
207 page = __first_valid_page(pfn, pageblock_nr_pages); 208 page = __first_valid_page(pfn, pageblock_nr_pages);
208 if (!page || get_pageblock_migratetype(page) != MIGRATE_ISOLATE) 209 if (!page || !is_migrate_isolate_page(page))
209 continue; 210 continue;
210 unset_migratetype_isolate(page, migratetype); 211 unset_migratetype_isolate(page, migratetype);
211 } 212 }
@@ -262,7 +263,7 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
262 */ 263 */
263 for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) { 264 for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) {
264 page = __first_valid_page(pfn, pageblock_nr_pages); 265 page = __first_valid_page(pfn, pageblock_nr_pages);
265 if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE) 266 if (page && !is_migrate_isolate_page(page))
266 break; 267 break;
267 } 268 }
268 page = __first_valid_page(start_pfn, end_pfn - start_pfn); 269 page = __first_valid_page(start_pfn, end_pfn - start_pfn);