diff options
-rw-r--r-- | mm/page_alloc.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index df1da25b309b..58923bea0d8b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -715,14 +715,17 @@ static void free_pcppages_bulk(struct zone *zone, int count, | |||
715 | /* must delete as __free_one_page list manipulates */ | 715 | /* must delete as __free_one_page list manipulates */ |
716 | list_del(&page->lru); | 716 | list_del(&page->lru); |
717 | mt = get_freepage_migratetype(page); | 717 | mt = get_freepage_migratetype(page); |
718 | if (unlikely(has_isolate_pageblock(zone))) { | ||
719 | mt = get_pageblock_migratetype(page); | ||
720 | if (is_migrate_isolate(mt)) | ||
721 | goto skip_counting; | ||
722 | } | ||
723 | __mod_zone_freepage_state(zone, 1, mt); | ||
724 | |||
725 | skip_counting: | ||
718 | /* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */ | 726 | /* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */ |
719 | __free_one_page(page, page_to_pfn(page), zone, 0, mt); | 727 | __free_one_page(page, page_to_pfn(page), zone, 0, mt); |
720 | trace_mm_page_pcpu_drain(page, 0, mt); | 728 | trace_mm_page_pcpu_drain(page, 0, mt); |
721 | if (likely(!is_migrate_isolate_page(page))) { | ||
722 | __mod_zone_page_state(zone, NR_FREE_PAGES, 1); | ||
723 | if (is_migrate_cma(mt)) | ||
724 | __mod_zone_page_state(zone, NR_FREE_CMA_PAGES, 1); | ||
725 | } | ||
726 | } while (--to_free && --batch_free && !list_empty(list)); | 729 | } while (--to_free && --batch_free && !list_empty(list)); |
727 | } | 730 | } |
728 | spin_unlock(&zone->lock); | 731 | spin_unlock(&zone->lock); |