mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-01 20:49:05 +07:00
cgroup: rename cgroup_css_from_dir() to css_from_dir() and update its syntax
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>
This commit is contained in:
parent
6e6eab0efd
commit
35cf083619
@ -903,7 +903,8 @@ bool css_is_ancestor(struct cgroup_subsys_state *cg,
|
|||||||
|
|
||||||
/* Get id and depth of css */
|
/* Get id and depth of css */
|
||||||
unsigned short css_id(struct cgroup_subsys_state *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 */
|
#else /* !CONFIG_CGROUPS */
|
||||||
|
|
||||||
|
@ -5700,34 +5700,28 @@ struct cgroup_subsys_state *css_lookup(struct cgroup_subsys *ss, int id)
|
|||||||
EXPORT_SYMBOL_GPL(css_lookup);
|
EXPORT_SYMBOL_GPL(css_lookup);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cgroup_css_from_dir - get corresponding css from file open on cgroup dir
|
* css_from_dir - get corresponding css from the dentry of a cgroup dir
|
||||||
* @f: directory file of interest
|
* @dentry: directory dentry of interest
|
||||||
* @id: subsystem id of interest
|
* @ss: subsystem of interest
|
||||||
*
|
*
|
||||||
* Must be called under RCU read lock. The caller is responsible for
|
* 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
|
* pinning the returned css if it needs to be accessed outside the RCU
|
||||||
* critical section.
|
* 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 cgroup *cgrp;
|
||||||
struct inode *inode;
|
|
||||||
struct cgroup_subsys_state *css;
|
|
||||||
|
|
||||||
WARN_ON_ONCE(!rcu_read_lock_held());
|
WARN_ON_ONCE(!rcu_read_lock_held());
|
||||||
|
|
||||||
inode = file_inode(f);
|
/* is @dentry a cgroup dir? */
|
||||||
/* check in cgroup filesystem dir */
|
if (!dentry->d_inode ||
|
||||||
if (inode->i_op != &cgroup_dir_inode_operations)
|
dentry->d_inode->i_op != &cgroup_dir_inode_operations)
|
||||||
return ERR_PTR(-EBADF);
|
return ERR_PTR(-EBADF);
|
||||||
|
|
||||||
if (id < 0 || id >= CGROUP_SUBSYS_COUNT)
|
cgrp = __d_cgrp(dentry);
|
||||||
return ERR_PTR(-EINVAL);
|
return cgroup_css(cgrp, ss->subsys_id) ?: ERR_PTR(-ENOENT);
|
||||||
|
|
||||||
/* get cgroup */
|
|
||||||
cgrp = __d_cgrp(f->f_dentry);
|
|
||||||
css = cgroup_css(cgrp, id);
|
|
||||||
return css ? css : ERR_PTR(-ENOENT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -593,7 +593,7 @@ static inline int perf_cgroup_connect(int fd, struct perf_event *event,
|
|||||||
|
|
||||||
rcu_read_lock();
|
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)) {
|
if (IS_ERR(css)) {
|
||||||
ret = PTR_ERR(css);
|
ret = PTR_ERR(css);
|
||||||
goto out;
|
goto out;
|
||||||
|
Loading…
Reference in New Issue
Block a user