cgroup: remove css_get_next
Now that we have generic and well ordered cgroup tree walkers there is no need to keep css_get_next in the place. Signed-off-by: Michal Hocko <mhocko@suse.cz> Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Acked-by: Li Zefan <lizefan@huawei.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Ying Han <yinghan@google.com> Cc: Tejun Heo <htejun@gmail.com> Cc: Glauber Costa <glommer@parallels.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
16248d8fe6
Коммит
6d2488f64a
|
@ -687,13 +687,6 @@ void free_css_id(struct cgroup_subsys *ss, struct cgroup_subsys_state *css);
|
||||||
|
|
||||||
struct cgroup_subsys_state *css_lookup(struct cgroup_subsys *ss, int id);
|
struct cgroup_subsys_state *css_lookup(struct cgroup_subsys *ss, int id);
|
||||||
|
|
||||||
/*
|
|
||||||
* Get a cgroup whose id is greater than or equal to id under tree of root.
|
|
||||||
* Returning a cgroup_subsys_state or NULL.
|
|
||||||
*/
|
|
||||||
struct cgroup_subsys_state *css_get_next(struct cgroup_subsys *ss, int id,
|
|
||||||
struct cgroup_subsys_state *root, int *foundid);
|
|
||||||
|
|
||||||
/* Returns true if root is ancestor of cg */
|
/* Returns true if root is ancestor of cg */
|
||||||
bool css_is_ancestor(struct cgroup_subsys_state *cg,
|
bool css_is_ancestor(struct cgroup_subsys_state *cg,
|
||||||
const struct cgroup_subsys_state *root);
|
const struct cgroup_subsys_state *root);
|
||||||
|
|
|
@ -5416,55 +5416,6 @@ struct cgroup_subsys_state *css_lookup(struct cgroup_subsys *ss, int id)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(css_lookup);
|
EXPORT_SYMBOL_GPL(css_lookup);
|
||||||
|
|
||||||
/**
|
|
||||||
* css_get_next - lookup next cgroup under specified hierarchy.
|
|
||||||
* @ss: pointer to subsystem
|
|
||||||
* @id: current position of iteration.
|
|
||||||
* @root: pointer to css. search tree under this.
|
|
||||||
* @foundid: position of found object.
|
|
||||||
*
|
|
||||||
* Search next css under the specified hierarchy of rootid. Calling under
|
|
||||||
* rcu_read_lock() is necessary. Returns NULL if it reaches the end.
|
|
||||||
*/
|
|
||||||
struct cgroup_subsys_state *
|
|
||||||
css_get_next(struct cgroup_subsys *ss, int id,
|
|
||||||
struct cgroup_subsys_state *root, int *foundid)
|
|
||||||
{
|
|
||||||
struct cgroup_subsys_state *ret = NULL;
|
|
||||||
struct css_id *tmp;
|
|
||||||
int tmpid;
|
|
||||||
int rootid = css_id(root);
|
|
||||||
int depth = css_depth(root);
|
|
||||||
|
|
||||||
if (!rootid)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
BUG_ON(!ss->use_id);
|
|
||||||
WARN_ON_ONCE(!rcu_read_lock_held());
|
|
||||||
|
|
||||||
/* fill start point for scan */
|
|
||||||
tmpid = id;
|
|
||||||
while (1) {
|
|
||||||
/*
|
|
||||||
* scan next entry from bitmap(tree), tmpid is updated after
|
|
||||||
* idr_get_next().
|
|
||||||
*/
|
|
||||||
tmp = idr_get_next(&ss->idr, &tmpid);
|
|
||||||
if (!tmp)
|
|
||||||
break;
|
|
||||||
if (tmp->depth >= depth && tmp->stack[depth] == rootid) {
|
|
||||||
ret = rcu_dereference(tmp->css);
|
|
||||||
if (ret) {
|
|
||||||
*foundid = tmpid;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* continue to scan from next id */
|
|
||||||
tmpid = tmpid + 1;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* get corresponding css from file open on cgroupfs directory
|
* get corresponding css from file open on cgroupfs directory
|
||||||
*/
|
*/
|
||||||
|
|
Загрузка…
Ссылка в новой задаче