[PATCH v10 01/13] cgroup: Added cgroup_get_from_id

Himanshu Madhani himanshu.madhani at oracle.com
Fri Apr 30 20:37:15 BST 2021



> On Apr 27, 2021, at 5:34 PM, Muneendra <muneendra.kumar at broadcom.com> wrote:
> 
> Added a new function cgroup_get_from_id  to retrieve the cgroup
> associated with cgroup id.
> Exported the same as this can be used by blk-cgorup.c
> 
> Added function declaration of cgroup_get_from_id in cgorup.h
> 
> This patch also exported the function cgroup_get_e_css
> as this is getting used in blk-cgroup.h
> 
> Reviewed-by: Hannes Reinecke <hare at suse.de>
> Signed-off-by: Muneendra <muneendra.kumar at broadcom.com>
> 
> ---
> v10:
> No change
> 
> v9:
> Addressed the issues reported by kernel test robot
> 
> v8:
> No change
> 
> v7:
> No change
> 
> v6:
> No change
> 
> v5:
> renamed the function cgroup_get_from_kernfs_id to
> cgroup_get_from_id
> 
> v4:
> No change
> 
> v3:
> Exported the cgroup_get_e_css
> 
> v2:
> New patch
> ---
> include/linux/cgroup.h |  6 ++++++
> kernel/cgroup/cgroup.c | 26 ++++++++++++++++++++++++++
> 2 files changed, 32 insertions(+)
> 
> diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
> index 4f2f79de083e..d2eace88d9d1 100644
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -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
> diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
> index 9153b20e5cc6..20e5424a8227 100644
> --- a/kernel/cgroup/cgroup.c
> +++ b/kernel/cgroup/cgroup.c
> @@ -577,6 +577,7 @@ struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgrp,
> 	rcu_read_unlock();
> 	return css;
> }
> +EXPORT_SYMBOL_GPL(cgroup_get_e_css);
> 
> static void cgroup_get_live(struct cgroup *cgrp)
> {
> @@ -5768,6 +5769,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 it returns the cgrp on failure it returns 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
> -- 
> 2.26.2
> 

Reviewed-by: Himanshu Madhani <himanshu.madhani at oracle.com>

--
Himanshu Madhani	 Oracle Linux Engineering




More information about the Linux-nvme mailing list