• Tejun Heo's avatar
    cgroup: combine cgroup_mutex locking and offline css draining · 945ba199
    Tejun Heo authored
    cgroup_drain_offline() is used to wait for csses being offlined to
    uninstall itself from cgroup->subsys[] array so that new csses can be
    installed.  The function's only user, cgroup_subtree_control_write(),
    calls it after performing some checks and restarts the whole process
    via restart_syscall() if draining has to release cgroup_mutex to wait.
    
    This can be simplified by draining before other synchronized
    operations so that there's nothing to restart.  This patch converts
    cgroup_drain_offline() to cgroup_lock_and_drain_offline() which
    performs both locking and draining and updates cgroup_kn_lock_live()
    use it instead of cgroup_mutex() if requested.  This combined locking
    and draining operations are easier to use and less error-prone.
    
    While at it, add WARNs in control_apply functions which triggers if
    the subtree isn't properly drained.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarZefan Li <lizefan@huawei.com>
    945ba199
cgroup.c 168 KB