scsi: cgroup: Add cgroup_get_from_id()
Add a new function, cgroup_get_from_id(), to retrieve the cgroup associated with a cgroup id. Also export the function cgroup_get_e_css() as this is needed in blk-cgroup.h. Link: https://lore.kernel.org/r/20210608043556.274139-2-muneendra.kumar@broadcom.com Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Muneendra Kumar <muneendra.kumar@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
49d3e59961
commit
6b658c4863
@ -696,6 +696,7 @@ static inline void cgroup_kthread_ready(void)
|
||||
}
|
||||
|
||||
void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen);
|
||||
struct cgroup *cgroup_get_from_id(u64 id);
|
||||
#else /* !CONFIG_CGROUPS */
|
||||
|
||||
struct cgroup_subsys_state;
|
||||
@ -743,6 +744,11 @@ static inline bool task_under_cgroup_hierarchy(struct task_struct *task,
|
||||
|
||||
static inline void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen)
|
||||
{}
|
||||
|
||||
static inline struct cgroup *cgroup_get_from_id(u64 id)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif /* !CONFIG_CGROUPS */
|
||||
|
||||
#ifdef CONFIG_CGROUPS
|
||||
|
@ -577,6 +577,7 @@ out_unlock:
|
||||
rcu_read_unlock();
|
||||
return css;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cgroup_get_e_css);
|
||||
|
||||
static void cgroup_get_live(struct cgroup *cgrp)
|
||||
{
|
||||
@ -5776,6 +5777,31 @@ void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen)
|
||||
kernfs_put(kn);
|
||||
}
|
||||
|
||||
/*
|
||||
* cgroup_get_from_id : get the cgroup associated with cgroup id
|
||||
* @id: cgroup id
|
||||
* On success return the cgrp, on failure return NULL
|
||||
*/
|
||||
struct cgroup *cgroup_get_from_id(u64 id)
|
||||
{
|
||||
struct kernfs_node *kn;
|
||||
struct cgroup *cgrp = NULL;
|
||||
|
||||
mutex_lock(&cgroup_mutex);
|
||||
kn = kernfs_find_and_get_node_by_id(cgrp_dfl_root.kf_root, id);
|
||||
if (!kn)
|
||||
goto out_unlock;
|
||||
|
||||
cgrp = kn->priv;
|
||||
if (cgroup_is_dead(cgrp) || !cgroup_tryget(cgrp))
|
||||
cgrp = NULL;
|
||||
kernfs_put(kn);
|
||||
out_unlock:
|
||||
mutex_unlock(&cgroup_mutex);
|
||||
return cgrp;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cgroup_get_from_id);
|
||||
|
||||
/*
|
||||
* proc_cgroup_show()
|
||||
* - Print task's cgroup paths into seq_file, one line for each hierarchy
|
||||
|
Loading…
Reference in New Issue
Block a user