diff options
Diffstat (limited to 'mm/page_isolation.c')
-rw-r--r-- | mm/page_isolation.c | 11 |
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); |