• Wen Congyang's avatar
    memory-hotplug: fix NR_FREE_PAGES mismatch · 97d0da22
    Wen Congyang authored
    NR_FREE_PAGES will be wrong after offlining pages.  We add/dec
    NR_FREE_PAGES like this now:
    
    1. move all pages in buddy system to MIGRATE_ISOLATE, and dec NR_FREE_PAGES
    
    2. don't add NR_FREE_PAGES when it is freed and the migratetype is
       MIGRATE_ISOLATE
    
    3. dec NR_FREE_PAGES when offlining isolated pages.
    
    4. add NR_FREE_PAGES when undoing isolate pages.
    
    When we come to step 3, all pages are in MIGRATE_ISOLATE list, and
    NR_FREE_PAGES are right.  When we come to step4, all pages are not in
    buddy system, so we don't change NR_FREE_PAGES in this step, but we change
    NR_FREE_PAGES in step3.  So NR_FREE_PAGES is wrong after offlining pages.
    So there is no need to change NR_FREE_PAGES in step3.
    
    This patch also fixs a problem in step2: if the migratetype is
    MIGRATE_ISOLATE, we should not add NR_FRR_PAGES when we remove pages from
    pcppages.
    Signed-off-by: default avatarWen Congyang <wency@cn.fujitsu.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Jiang Liu <liuj97@gmail.com>
    Cc: Len Brown <len.brown@intel.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Minchan Kim <minchan.kim@gmail.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Cc: Dave Hansen <dave@linux.vnet.ibm.com>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Cc: Jianguo Wu <wujianguo106@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    97d0da22
page_alloc.c 169 KB