• Tejun Heo's avatar
    cgroup: generalize obtaining the handles of and notifying cgroup files · 6f60eade
    Tejun Heo authored
    cgroup core handles creations and removals of cgroup interface files
    as described by cftypes.  There are cases where the handle for a given
    file instance is necessary, for example, to generate a file modified
    event.  Currently, this is handled by explicitly matching the callback
    method pointer and storing the file handle manually in
    cgroup_add_file().  While this simple approach works for cgroup core
    files, it can't for controller interface files.
    
    This patch generalizes cgroup interface file handle handling.  struct
    cgroup_file is defined and each cftype can optionally tell cgroup core
    to store the file handle by setting ->file_offset.  A file handle
    remains accessible as long as the containing css is accessible.
    
    Both "cgroup.procs" and "cgroup.events" are converted to use the new
    generic mechanism instead of hooking directly into cgroup_add_file().
    Also, cgroup_file_notify() which takes a struct cgroup_file and
    generates a file modified event on it is added and replaces explicit
    kernfs_notify() invocations.
    
    This generalizes cgroup file handle handling and allows controllers to
    generate file modified notifications.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Li Zefan <lizefan@huawei.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    6f60eade
cgroup.c 157 KB