• Tejun Heo's avatar
    cgroup: split cgroup destruction into two steps · ea15f8cc
    Tejun Heo authored
    Split cgroup_destroy_locked() into two steps and put the latter half
    into cgroup_offline_fn() which is executed from a work item.  The
    latter half is responsible for offlining the css's, removing the
    cgroup from internal lists, and propagating release notification to
    the parent.  The separation is to allow using percpu refcnt for css.
    
    Note that this allows for other cgroup operations to happen between
    the first and second halves of destruction, including creating a new
    cgroup with the same name.  As the target cgroup is marked DEAD in the
    first half and cgroup internals don't care about the names of cgroups,
    this should be fine.  A comment explaining this will be added by the
    next patch which implements the actual percpu refcnting.
    
    As RCU freeing is guaranteed to happen after the second step of
    destruction, we can use the same work item for both.  This patch
    renames cgroup->free_work to ->destroy_work and uses it for both
    purposes.  INIT_WORK() is now performed right before queueing the work
    item.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarLi Zefan <lizefan@huawei.com>
    ea15f8cc
cgroup.c 148 KB