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);
|
void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen);
|
||||||
|
struct cgroup *cgroup_get_from_id(u64 id);
|
||||||
#else /* !CONFIG_CGROUPS */
|
#else /* !CONFIG_CGROUPS */
|
||||||
|
|
||||||
struct cgroup_subsys_state;
|
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 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 */
|
#endif /* !CONFIG_CGROUPS */
|
||||||
|
|
||||||
#ifdef CONFIG_CGROUPS
|
#ifdef CONFIG_CGROUPS
|
||||||
|
@ -577,6 +577,7 @@ out_unlock:
|
|||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
return css;
|
return css;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(cgroup_get_e_css);
|
||||||
|
|
||||||
static void cgroup_get_live(struct cgroup *cgrp)
|
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);
|
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()
|
* proc_cgroup_show()
|
||||||
* - Print task's cgroup paths into seq_file, one line for each hierarchy
|
* - Print task's cgroup paths into seq_file, one line for each hierarchy
|
||||||
|
Loading…
Reference in New Issue
Block a user