• T
    cgroup: introduce struct cfent · 05ef1d7c
    Tejun Heo 提交于
    This patch adds cfent (cgroup file entry) which is the association
    between a cgroup and a file.  This is in-cgroup representation of
    files under a cgroup directory.  This simplifies walking walking
    cgroup files and thus cgroup_clear_directory(), which is now
    implemented in two parts - cgroup_rm_file() and a loop around it.
    
    cgroup_rm_file() will be used to implement cftype removal and cfent is
    scheduled to serve cgroup specific per-file data (e.g. for sysfs-like
    "sever" semantics).
    
    v2: - cfe was freed from cgroup_rm_file() which led to use-after-free
          if the file had openers at the time of removal.  Moved to
          cgroup_diput().
    
        - cgroup_clear_directory() triggered WARN_ON_ONCE() if d_subdirs
          wasn't empty after removing all files.  This triggered
          spuriously if some files were open during directory clearing.
          Removed.
    
    v3: - In cgroup_diput(), WARN_ONCE(!list_empty(&cfe->node)) could be
          spuriously triggered for root cgroups because they don't go
          through cgroup_clear_directory() on unmount.  Don't trigger WARN
          for root cgroups.
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Acked-by: NLi Zefan <lizf@cn.fujitsu.com>
    Cc: Glauber Costa <glommer@parallels.com>
    05ef1d7c
cgroup.c 141.9 KB