|
@@ -588,13 +588,13 @@ static void free_pcppages_bulk(struct zone *zone, int count,
|
|
|
{
|
|
|
int migratetype = 0;
|
|
|
int batch_free = 0;
|
|
|
+ int to_free = count;
|
|
|
|
|
|
spin_lock(&zone->lock);
|
|
|
zone->all_unreclaimable = 0;
|
|
|
zone->pages_scanned = 0;
|
|
|
|
|
|
- __mod_zone_page_state(zone, NR_FREE_PAGES, count);
|
|
|
- while (count) {
|
|
|
+ while (to_free) {
|
|
|
struct page *page;
|
|
|
struct list_head *list;
|
|
|
|
|
@@ -619,8 +619,9 @@ static void free_pcppages_bulk(struct zone *zone, int count,
|
|
|
/* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */
|
|
|
__free_one_page(page, zone, 0, page_private(page));
|
|
|
trace_mm_page_pcpu_drain(page, 0, page_private(page));
|
|
|
- } while (--count && --batch_free && !list_empty(list));
|
|
|
+ } while (--to_free && --batch_free && !list_empty(list));
|
|
|
}
|
|
|
+ __mod_zone_page_state(zone, NR_FREE_PAGES, count);
|
|
|
spin_unlock(&zone->lock);
|
|
|
}
|
|
|
|
|
@@ -631,8 +632,8 @@ static void free_one_page(struct zone *zone, struct page *page, int order,
|
|
|
zone->all_unreclaimable = 0;
|
|
|
zone->pages_scanned = 0;
|
|
|
|
|
|
- __mod_zone_page_state(zone, NR_FREE_PAGES, 1 << order);
|
|
|
__free_one_page(page, zone, order, migratetype);
|
|
|
+ __mod_zone_page_state(zone, NR_FREE_PAGES, 1 << order);
|
|
|
spin_unlock(&zone->lock);
|
|
|
}
|
|
|
|