]> Pileus Git - ~andy/linux/commitdiff
cgroup: rename cgroup_css_from_dir() to css_from_dir() and update its syntax
authorTejun Heo <tj@kernel.org>
Mon, 26 Aug 2013 22:40:56 +0000 (18:40 -0400)
committerTejun Heo <tj@kernel.org>
Mon, 26 Aug 2013 22:40:56 +0000 (18:40 -0400)
cgroup_css_from_dir() will grow another user.  In preparation, make
the following changes.

* All css functions are prefixed with just "css_", rename it to
  css_from_dir().

* Take dentry * instead of file * as dentry is what ultimately
  identifies a cgroup and file may not always be available.  Note that
  the function now checkes whether @dentry->d_inode is NULL as the
  caller now may specify a negative dentry.

* Make it take cgroup_subsys * instead of integer subsys_id.  This
  simplifies the function and allows specifying no subsystem for
  cgroup->dummy_css.

* Make return section a bit less verbose.

This patch doesn't introduce any behavior changes.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
include/linux/cgroup.h
kernel/cgroup.c
kernel/events/core.c

index b685955d4b29bfec2f6d33c0eba8e610cb6960e2..21ba29869eb8787af242551795df80c50e6a4338 100644 (file)
@@ -903,7 +903,8 @@ bool css_is_ancestor(struct cgroup_subsys_state *cg,
 
 /* Get id and depth of css */
 unsigned short css_id(struct cgroup_subsys_state *css);
-struct cgroup_subsys_state *cgroup_css_from_dir(struct file *f, int id);
+struct cgroup_subsys_state *css_from_dir(struct dentry *dentry,
+                                        struct cgroup_subsys *ss);
 
 #else /* !CONFIG_CGROUPS */
 
index ef43e3f453ef5b0ec95d98c565ba5c432913a348..921b1387c944d562c8c6dd7bf885d07e44b991e2 100644 (file)
@@ -5700,34 +5700,28 @@ struct cgroup_subsys_state *css_lookup(struct cgroup_subsys *ss, int id)
 EXPORT_SYMBOL_GPL(css_lookup);
 
 /**
- * cgroup_css_from_dir - get corresponding css from file open on cgroup dir
- * @f: directory file of interest
- * @id: subsystem id of interest
+ * css_from_dir - get corresponding css from the dentry of a cgroup dir
+ * @dentry: directory dentry of interest
+ * @ss: subsystem of interest
  *
  * Must be called under RCU read lock.  The caller is responsible for
  * pinning the returned css if it needs to be accessed outside the RCU
  * critical section.
  */
-struct cgroup_subsys_state *cgroup_css_from_dir(struct file *f, int id)
+struct cgroup_subsys_state *css_from_dir(struct dentry *dentry,
+                                        struct cgroup_subsys *ss)
 {
        struct cgroup *cgrp;
-       struct inode *inode;
-       struct cgroup_subsys_state *css;
 
        WARN_ON_ONCE(!rcu_read_lock_held());
 
-       inode = file_inode(f);
-       /* check in cgroup filesystem dir */
-       if (inode->i_op != &cgroup_dir_inode_operations)
+       /* is @dentry a cgroup dir? */
+       if (!dentry->d_inode ||
+           dentry->d_inode->i_op != &cgroup_dir_inode_operations)
                return ERR_PTR(-EBADF);
 
-       if (id < 0 || id >= CGROUP_SUBSYS_COUNT)
-               return ERR_PTR(-EINVAL);
-
-       /* get cgroup */
-       cgrp = __d_cgrp(f->f_dentry);
-       css = cgroup_css(cgrp, id);
-       return css ? css : ERR_PTR(-ENOENT);
+       cgrp = __d_cgrp(dentry);
+       return cgroup_css(cgrp, ss->subsys_id) ?: ERR_PTR(-ENOENT);
 }
 
 /**
index 23261f95771303043fd11a4ec81579cc548c2eaa..b59ab6632f3080369a5e0ce9e6a4bff9ea4510a5 100644 (file)
@@ -593,7 +593,7 @@ static inline int perf_cgroup_connect(int fd, struct perf_event *event,
 
        rcu_read_lock();
 
-       css = cgroup_css_from_dir(f.file, perf_subsys_id);
+       css = css_from_dir(f.file->f_dentry, &perf_subsys);
        if (IS_ERR(css)) {
                ret = PTR_ERR(css);
                goto out;