• Tejun Heo's avatar
    cgroup: simplify dynamic cftype addition and removal · 21a2d343
    Tejun Heo authored
    Dynamic cftype addition and removal using cgroup_add/rm_cftypes()
    respectively has been quite hairy due to vfs i_mutex.  As i_mutex
    nests outside cgroup_mutex, cgroup_mutex has to be released and
    regrabbed on each iteration through the hierarchy complicating the
    process.  Now that i_mutex is no longer in play, it can be simplified.
    
    * Just holding cgroup_tree_mutex is enough.  No need to meddle with
      cgroup_mutex.
    
    * No reason to play the unlock - relock - check serial_nr dancing.
      Everything can be atomically while holding cgroup_tree_mutex.
    
    * cgroup_cfts_prepare() is replaced with direct locking of
      cgroup_tree_mutex.
    
    * cgroup_cfts_commit() no longer fiddles with locking.  It just
      applies the cftypes change to the existing cgroups in the hierarchy.
      Renamed to cgroup_cfts_apply().
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarLi Zefan <lizefan@huawei.com>
    21a2d343
cgroup.c 132 KB