Skip to content
  • Wen Congyang's avatar
    memory-hotplug: try to offline the memory twice to avoid dependence · 993c1aad
    Wen Congyang authored
    
    
    memory can't be offlined when CONFIG_MEMCG is selected.  For example:
    there is a memory device on node 1.  The address range is [1G, 1.5G).
    You will find 4 new directories memory8, memory9, memory10, and memory11
    under the directory /sys/devices/system/memory/.
    
    If CONFIG_MEMCG is selected, we will allocate memory to store page
    cgroup when we online pages.  When we online memory8, the memory stored
    page cgroup is not provided by this memory device.  But when we online
    memory9, the memory stored page cgroup may be provided by memory8.  So
    we can't offline memory8 now.  We should offline the memory in the
    reversed order.
    
    When the memory device is hotremoved, we will auto offline memory
    provided by this memory device.  But we don't know which memory is
    onlined first, so offlining memory may fail.  In such case, iterate
    twice to offline the memory.  1st iterate: offline every non primary
    memory block.  2nd iterate: offline primary (i.e.  first added) memory
    block.
    
    This idea is suggested by KOSAKI Motohiro.
    
    Signed-off-by: default avatarWen Congyang <wency@cn.fujitsu.com>
    Signed-off-by: default avatarTang Chen <tangchen@cn.fujitsu.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Jiang Liu <jiang.liu@huawei.com>
    Cc: Jianguo Wu <wujianguo@huawei.com>
    Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Wu Jianguo <wujianguo@huawei.com>
    Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    993c1aad