|
|
@@ -8,28 +8,6 @@
|
|
|
#include <linux/memory.h>
|
|
|
#include "internal.h"
|
|
|
|
|
|
-/* called while holding zone->lock */
|
|
|
-static void set_pageblock_isolate(struct page *page)
|
|
|
-{
|
|
|
- if (get_pageblock_migratetype(page) == MIGRATE_ISOLATE)
|
|
|
- return;
|
|
|
-
|
|
|
- set_pageblock_migratetype(page, MIGRATE_ISOLATE);
|
|
|
- page_zone(page)->nr_pageblock_isolate++;
|
|
|
-}
|
|
|
-
|
|
|
-/* called while holding zone->lock */
|
|
|
-static void restore_pageblock_isolate(struct page *page, int migratetype)
|
|
|
-{
|
|
|
- struct zone *zone = page_zone(page);
|
|
|
- if (WARN_ON(get_pageblock_migratetype(page) != MIGRATE_ISOLATE))
|
|
|
- return;
|
|
|
-
|
|
|
- BUG_ON(zone->nr_pageblock_isolate <= 0);
|
|
|
- set_pageblock_migratetype(page, migratetype);
|
|
|
- zone->nr_pageblock_isolate--;
|
|
|
-}
|
|
|
-
|
|
|
int set_migratetype_isolate(struct page *page, bool skip_hwpoisoned_pages)
|
|
|
{
|
|
|
struct zone *zone;
|
|
|
@@ -80,7 +58,7 @@ int set_migratetype_isolate(struct page *page, bool skip_hwpoisoned_pages)
|
|
|
unsigned long nr_pages;
|
|
|
int migratetype = get_pageblock_migratetype(page);
|
|
|
|
|
|
- set_pageblock_isolate(page);
|
|
|
+ set_pageblock_migratetype(page, MIGRATE_ISOLATE);
|
|
|
nr_pages = move_freepages_block(zone, page, MIGRATE_ISOLATE);
|
|
|
|
|
|
__mod_zone_freepage_state(zone, -nr_pages, migratetype);
|
|
|
@@ -103,7 +81,7 @@ void unset_migratetype_isolate(struct page *page, unsigned migratetype)
|
|
|
goto out;
|
|
|
nr_pages = move_freepages_block(zone, page, migratetype);
|
|
|
__mod_zone_freepage_state(zone, nr_pages, migratetype);
|
|
|
- restore_pageblock_isolate(page, migratetype);
|
|
|
+ set_pageblock_migratetype(page, migratetype);
|
|
|
out:
|
|
|
spin_unlock_irqrestore(&zone->lock, flags);
|
|
|
}
|