• Tejun Heo's avatar
    cgroup: replace cgroup->css_kill_cnt with ->nr_css · f20104de
    Tejun Heo authored
    Currently, css (cgroup_subsys_state) lifetime is tied to that of the
    associated cgroup.  With the planned unified hierarchy, css's will be
    dynamically created and destroyed within the lifetime of a cgroup.  To
    enable such usages, css's will be individually RCU protected instead
    of being tied to the cgroup.
    
    cgroup->css_kill_cnt is used during cgroup destruction to wait for css
    reference count disable; however, this model doesn't work once css's
    lifetimes are managed separately from cgroup's.  This patch replaces
    it with cgroup->nr_css which is an cgroup_mutex protected integer
    counting the number of attached css's.  The count is incremented from
    online_css() and decremented after refcnt kill is confirmed.  If the
    count reaches zero and the cgroup is marked dead, the second stage of
    cgroup destruction is kicked off.  If a cgroup doesn't have any css
    attached at the time of rmdir, cgroup_destroy_locked() now invokes the
    second stage directly as no css kill confirmation would happen.
    
    cgroup_offline_fn() - the second step of cgroup destruction - is
    renamed to cgroup_destroy_css_killed() and now expects to be called
    with cgroup_mutex held.
    
    While this patch changes how css destruction is punted to work items,
    it shouldn't change any visible behavior.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarLi Zefan <lizefan@huawei.com>
    f20104de
cgroup.c 157 KB