summaryrefslogtreecommitdiffstats
path: root/mm/memcontrol.c
diff options
context:
space:
mode:
authorTejun Heo2016-04-22 01:06:48 +0200
committerTejun Heo2016-04-25 21:45:14 +0200
commit5cf1cacb49aee39c3e02ae87068fc3c6430659b0 (patch)
tree569518d16093a55169e4ef1cd5399e9a3f620d06 /mm/memcontrol.c
parentMerge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert... (diff)
downloadkernel-qcow2-linux-5cf1cacb49aee39c3e02ae87068fc3c6430659b0.tar.gz
kernel-qcow2-linux-5cf1cacb49aee39c3e02ae87068fc3c6430659b0.tar.xz
kernel-qcow2-linux-5cf1cacb49aee39c3e02ae87068fc3c6430659b0.zip
cgroup, cpuset: replace cpuset_post_attach_flush() with cgroup_subsys->post_attach callback
Since e93ad19d0564 ("cpuset: make mm migration asynchronous"), cpuset kicks off asynchronous NUMA node migration if necessary during task migration and flushes it from cpuset_post_attach_flush() which is called at the end of __cgroup_procs_write(). This is to avoid performing migration with cgroup_threadgroup_rwsem write-locked which can lead to deadlock through dependency on kworker creation. memcg has a similar issue with charge moving, so let's convert it to an official callback rather than the current one-off cpuset specific function. This patch adds cgroup_subsys->post_attach callback and makes cpuset register cpuset_post_attach_flush() as its ->post_attach. The conversion is mostly one-to-one except that the new callback is called under cgroup_mutex. This is to guarantee that no other migration operations are started before ->post_attach callbacks are finished. cgroup_mutex is one of the outermost mutex in the system and has never been and shouldn't be a problem. We can add specialized synchronization around __cgroup_procs_write() but I don't think there's any noticeable benefit. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Li Zefan <lizefan@huawei.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: <stable@vger.kernel.org> # 4.4+ prerequisite for the next patch
Diffstat (limited to 'mm/memcontrol.c')
0 files changed, 0 insertions, 0 deletions