• Waiman Long's avatar
    cgroup/cpuset: Relax constraints to partition & cpus changes · f0af1bfc
    Waiman Long authored
    Currently, enabling a partition root is only allowed if all the
    constraints of a valid partition are satisfied. Even changes to
    "cpuset.cpus" may not be allowed in some cases. Moreover, there are
    limits to changes made to a parent cpuset if it is a valid partition
    root. This is contrary to the general cgroup v2 philosophy.
    
    This patch relaxes the constraints of changing the state of "cpuset.cpus"
    and "cpuset.cpus.partition". Now all valid changes ("member" or "root")
    to "cpuset.cpus.partition" are allowed even if there are child cpusets
    underneath it.
    
    Trying to make a cpuset a partition root, however, will cause its state
    to become invalid if the following constraints of a valid partition
    root are not satisfied.
    
     1) The "cpuset.cpus" is non-empty and exclusive.
     2) The parent cpuset is a valid partition root.
     3) The "cpuset.cpus" overlaps parent's "cpuset.cpus".
    
    Similarly, almost all changes to "cpuset.cpus" are allowed with the
    exception that if the underlying CS_CPU_EXCLUSIVE flag is set, the
    exclusivity rule will still apply.
    Signed-off-by: default avatarWaiman Long <longman@redhat.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    f0af1bfc
cpuset.c 107 KB