• Tang Chen's avatar
    mem-hotplug: reset node managed pages when hot-adding a new pgdat · f784a3f1
    Tang Chen authored
    In free_area_init_core(), zone->managed_pages is set to an approximate
    value for lowmem, and will be adjusted when the bootmem allocator frees
    pages into the buddy system.
    
    But free_area_init_core() is also called by hotadd_new_pgdat() when
    hot-adding memory.  As a result, zone->managed_pages of the newly added
    node's pgdat is set to an approximate value in the very beginning.
    
    Even if the memory on that node has node been onlined,
    /sys/device/system/node/nodeXXX/meminfo has wrong value:
    
      hot-add node2 (memory not onlined)
      cat /sys/device/system/node/node2/meminfo
      Node 2 MemTotal:       33554432 kB
      Node 2 MemFree:               0 kB
      Node 2 MemUsed:        33554432 kB
      Node 2 Active:                0 kB
    
    This patch fixes this problem by reset node managed pages to 0 after
    hot-adding a new node.
    
    1. Move reset_managed_pages_done from reset_node_managed_pages() to
       reset_all_zones_managed_pages()
    2. Make reset_node_managed_pages() non-static
    3. Call reset_node_managed_pages() in hotadd_new_pgdat() after pgdat
       is initialized
    Signed-off-by: default avatarTang Chen <tangchen@cn.fujitsu.com>
    Signed-off-by: default avatarYasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Cc: <stable@vger.kernel.org>	[3.16+]
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f784a3f1
Name
Last commit
Last update
Documentation Loading commit data...
arch Loading commit data...
block Loading commit data...
crypto Loading commit data...
drivers Loading commit data...
firmware Loading commit data...
fs Loading commit data...
include Loading commit data...
init Loading commit data...
ipc Loading commit data...
kernel Loading commit data...
lib Loading commit data...
mm Loading commit data...
net Loading commit data...
samples Loading commit data...
scripts Loading commit data...
security Loading commit data...
sound Loading commit data...
tools Loading commit data...
usr Loading commit data...
virt/kvm Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
Kbuild Loading commit data...
Kconfig Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README Loading commit data...
REPORTING-BUGS Loading commit data...