mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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
					
				
					 2 changed files with 32 additions and 0 deletions
				
			
		| 
						 | 
					@ -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 @@ struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgrp,
 | 
				
			||||||
	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 a new issue