From 2d9abd9e916c7e77dc7009754bae5f48451fdcc5 Mon Sep 17 00:00:00 2001 From: Christoph Lameter Date: Thu, 31 Aug 2006 21:27:34 -0700 Subject: [PATCH] --- yaml --- r: 33751 b: refs/heads/master c: a302eb4e4602d6444ae75a0e516fb2f2c62d6642 h: refs/heads/master i: 33749: a24db958232c74293ec4dfec23cbea85231be385 33747: bfddd54f77cfe595c033921a7e5bca3f887c5430 33743: 8d69430b36cb53a725456a9a649fe7d43756f883 v: v3 --- [refs] | 2 +- trunk/mm/vmstat.c | 20 +++++--------------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index 7fec6db4c257..67cb67708f46 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b63fe1ba4409774738c971d4e6f0b12b54cc2c65 +refs/heads/master: a302eb4e4602d6444ae75a0e516fb2f2c62d6642 diff --git a/trunk/mm/vmstat.c b/trunk/mm/vmstat.c index dfdf24133901..3799a0f7543a 100644 --- a/trunk/mm/vmstat.c +++ b/trunk/mm/vmstat.c @@ -190,8 +190,8 @@ static void __inc_zone_state(struct zone *zone, enum zone_stat_item item) (*p)++; if (unlikely(*p > STAT_THRESHOLD)) { - zone_page_state_add(*p, zone, item); - *p = 0; + zone_page_state_add(*p + STAT_THRESHOLD / 2, zone, item); + *p = -STAT_THRESHOLD / 2; } } @@ -209,8 +209,8 @@ void __dec_zone_page_state(struct page *page, enum zone_stat_item item) (*p)--; if (unlikely(*p < -STAT_THRESHOLD)) { - zone_page_state_add(*p, zone, item); - *p = 0; + zone_page_state_add(*p - STAT_THRESHOLD / 2, zone, item); + *p = STAT_THRESHOLD /2; } } EXPORT_SYMBOL(__dec_zone_page_state); @@ -239,19 +239,9 @@ EXPORT_SYMBOL(inc_zone_page_state); void dec_zone_page_state(struct page *page, enum zone_stat_item item) { unsigned long flags; - struct zone *zone; - s8 *p; - zone = page_zone(page); local_irq_save(flags); - p = diff_pointer(zone, item); - - (*p)--; - - if (unlikely(*p < -STAT_THRESHOLD)) { - zone_page_state_add(*p, zone, item); - *p = 0; - } + __dec_zone_page_state(page, item); local_irq_restore(flags); } EXPORT_SYMBOL(dec_zone_page_state);