summaryrefslogtreecommitdiff
path: root/kernel/notifier.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2016-04-21 23:06:48 (GMT)
committerTejun Heo <tj@kernel.org>2016-04-25 19:45:14 (GMT)
commit5cf1cacb49aee39c3e02ae87068fc3c6430659b0 (patch)
tree569518d16093a55169e4ef1cd5399e9a3f620d06 /kernel/notifier.c
parentbcc981e9ed84c678533299d7eff17d2c81e4d5de (diff)
downloadlinux-5cf1cacb49aee39c3e02ae87068fc3c6430659b0.tar.xz
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 'kernel/notifier.c')
0 files changed, 0 insertions, 0 deletions