• L
    cpuset: add cs->effective_cpus and cs->effective_mems · e2b9a3d7
    Li Zefan 提交于
    We're going to have separate user-configured masks and effective ones.
    
    Eventually configured masks can only be changed by writing cpuset.cpus
    and cpuset.mems, and they won't be restricted by parent cpuset. While
    effective masks reflect cpu/memory hotplug and hierachical restriction,
    and these are the real masks that apply to the tasks in the cpuset.
    
    We calculate effective mask this way:
      - top cpuset's effective_mask == online_mask, otherwise
      - cpuset's effective_mask == configured_mask & parent effective_mask,
        if the result is empty, it inherits parent effective mask.
    
    Those behavior changes are for default hierarchy only. For legacy
    hierachy, effective_mask and configured_mask are the same, so we won't
    break old interfaces.
    
    This patch adds the effective masks to struct cpuset and initializes
    them. The effective masks of the top cpuset is the same with configured
    masks, and a child cpuset inherits its parent's effective masks.
    
    This won't introduce behavior change.
    
    v2:
    - s/real_{mems,cpus}_allowed/effective_{mems,cpus}, suggested by Tejun.
    - don't init effective masks in cpuset_css_online() if !cgroup_on_dfl.
    Signed-off-by: NLi Zefan <lizefan@huawei.com>
    Signed-off-by: NTejun Heo <tj@kernel.org>
    e2b9a3d7
cpuset.c 75.4 KB