v2 -> v3: - remove async hotplug propagation work - do propagation work in one place for both hotplug and unplug v1 -> v2: - add documentation in include/linux/cgroup.h - drop rcu_read_lock() before calling update_task_nodemask() when iterating cpuset hierarchy ====================================== Currently some cpuset behaviors are not friendly when cpuset is co-mounted with other cgroup controllers. Now with this patchset if cpuset is mounted with sane_behavior option, it behaves differently: - Tasks will be kept in empty cpusets when hotplug happens and take masks of ancestors with non-empty cpus/mems, instead of being moved to an ancestor. - A task can be moved into an empty cpuset, and again it takes masks of ancestors, so the user can drop a task into a newly created cgroup without having to do anything for it. As tasks can reside in empy cpusets, here're some rules: - They can be moved to another cpuset, regardless it's empty or not. - Though it takes masks from ancestors, it takes other configs from the empty cpuset. - If the ancestors' masks are changed, those tasks will also be updated to take new masks. Li Zefan (7): cpuset: let hotplug propagation work wait for task attaching cpuset: remove async hotplug propagation work cpuset: record old_mems_allowed in struct cpuset cpuset: introduce effective_{cpumask|nodemask}_cpuset() cpuset: allow to keep tasks in empty cpusets cpuset: allow to move tasks to empty cpusets cpuset: fix to migrate mm correctly in a corner case include/linux/cgroup.h | 7 + kernel/cpuset.c | 390 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 264 insertions(+), 133 deletions(-) -- 1.8.0.2 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers