• Paul Jackson's avatar
    [PATCH] cpuset: hotunplug cpus and mems in all cpusets · b1aac8bb
    Paul Jackson authored
    The cpuset code handling hot unplug of CPUs or Memory Nodes was incorrect -
    it could remove a CPU or Node from the top cpuset, while leaving it still
    in some child cpusets.
    
    One basic rule of cpusets is that each cpusets cpus and mems are subsets of
    its parents.  The cpuset hot unplug code violated this rule.
    
    So the cpuset hotunplug handler must walk down the tree, removing any
    removed CPU or Node from all cpusets.
    
    However, it is not allowed to make a cpusets cpus or mems become empty.
    They can only transition from empty to non-empty, not back.
    
    So if the last CPU or Node would be removed from a cpuset by the above
    walk, we scan back up the cpuset hierarchy, finding the nearest ancestor
    that still has something online, and copy its CPU or Memory placement.
    Signed-off-by: default avatarPaul Jackson <pj@sgi.com>
    Cc: Nathan Lynch <ntl@pobox.com>
    Cc: Anton Blanchard <anton@samba.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    b1aac8bb
cpuset.c 75.8 KB