cgroup: use css_set->mg_dst_cgrp for the migration target cgroup
authorTejun Heo <tj@kernel.org>
Tue, 8 Mar 2016 16:51:26 +0000 (11:51 -0500)
committerTejun Heo <tj@kernel.org>
Tue, 8 Mar 2016 16:51:26 +0000 (11:51 -0500)
commite4857982f49d21c05a84351b56724bf353022355
treedc2e6039b714635e36ab148ed1ef20a9cbb01f4a
parent37ff9f8f474216d0cfca7565a4e0caa521ee6e7e
cgroup: use css_set->mg_dst_cgrp for the migration target cgroup

Migration can be multi-target on the default hierarchy when a
controller is enabled - processes belonging to each child cgroup have
to be moved to the child cgroup itself to refresh css association.

This isn't a problem for cgroup_migrate_add_src() as each source
css_set still maps to single source and target cgroups; however,
cgroup_migrate_prepare_dst() is called once after all source css_sets
are added and thus might not have a single destination cgroup.  This
is currently worked around by specifying NULL for @dst_cgrp and using
the source's default cgroup as destination as the only multi-target
migration in use is self-targetting.  While this works, it's subtle
and clunky.

As all taget cgroups are already specified while preparing the source
css_sets, this clunkiness can easily be removed by recording the
target cgroup in each source css_set.  This patch adds
css_set->mg_dst_cgrp which is recorded on cgroup_migrate_src() and
used by cgroup_migrate_prepare_dst().  This also makes migration code
ready for arbitrary multi-target migration.

Signed-off-by: Tejun Heo <tj@kernel.org>
include/linux/cgroup-defs.h
kernel/cgroup.c