diff options
author | Tejun Heo <tj@kernel.org> | 2013-05-14 16:52:30 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-05-14 16:52:30 -0400 |
commit | dd4a4ffc0a4723cd0bef065af549803d256e1f7e (patch) | |
tree | a246b7307e85983c6633eadbd49f8c3b24dc1dd6 /block | |
parent | 2423c9c3f0ffffa8f87cbdafe9781273c5d1b6a2 (diff) |
blkcg: move blkg_for_each_descendant_pre() to block/blk-cgroup.h
blk-throttle hierarchy support will make use of it. Move
blkg_for_each_descendant_pre() from block/blk-cgroup.c to
block/blk-cgroup.h.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-cgroup.c | 24 | ||||
-rw-r--r-- | block/blk-cgroup.h | 20 |
2 files changed, 22 insertions, 22 deletions
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 7fc35f683c4e..b950306838ad 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c | |||
@@ -32,26 +32,6 @@ EXPORT_SYMBOL_GPL(blkcg_root); | |||
32 | 32 | ||
33 | static struct blkcg_policy *blkcg_policy[BLKCG_MAX_POLS]; | 33 | static struct blkcg_policy *blkcg_policy[BLKCG_MAX_POLS]; |
34 | 34 | ||
35 | static struct blkcg_gq *__blkg_lookup(struct blkcg *blkcg, | ||
36 | struct request_queue *q, bool update_hint); | ||
37 | |||
38 | /** | ||
39 | * blkg_for_each_descendant_pre - pre-order walk of a blkg's descendants | ||
40 | * @d_blkg: loop cursor pointing to the current descendant | ||
41 | * @pos_cgrp: used for iteration | ||
42 | * @p_blkg: target blkg to walk descendants of | ||
43 | * | ||
44 | * Walk @c_blkg through the descendants of @p_blkg. Must be used with RCU | ||
45 | * read locked. If called under either blkcg or queue lock, the iteration | ||
46 | * is guaranteed to include all and only online blkgs. The caller may | ||
47 | * update @pos_cgrp by calling cgroup_rightmost_descendant() to skip | ||
48 | * subtree. | ||
49 | */ | ||
50 | #define blkg_for_each_descendant_pre(d_blkg, pos_cgrp, p_blkg) \ | ||
51 | cgroup_for_each_descendant_pre((pos_cgrp), (p_blkg)->blkcg->css.cgroup) \ | ||
52 | if (((d_blkg) = __blkg_lookup(cgroup_to_blkcg(pos_cgrp), \ | ||
53 | (p_blkg)->q, false))) | ||
54 | |||
55 | static bool blkcg_policy_enabled(struct request_queue *q, | 35 | static bool blkcg_policy_enabled(struct request_queue *q, |
56 | const struct blkcg_policy *pol) | 36 | const struct blkcg_policy *pol) |
57 | { | 37 | { |
@@ -158,8 +138,8 @@ err_free: | |||
158 | * @q's bypass state. If @update_hint is %true, the caller should be | 138 | * @q's bypass state. If @update_hint is %true, the caller should be |
159 | * holding @q->queue_lock and lookup hint is updated on success. | 139 | * holding @q->queue_lock and lookup hint is updated on success. |
160 | */ | 140 | */ |
161 | static struct blkcg_gq *__blkg_lookup(struct blkcg *blkcg, | 141 | struct blkcg_gq *__blkg_lookup(struct blkcg *blkcg, struct request_queue *q, |
162 | struct request_queue *q, bool update_hint) | 142 | bool update_hint) |
163 | { | 143 | { |
164 | struct blkcg_gq *blkg; | 144 | struct blkcg_gq *blkg; |
165 | 145 | ||
diff --git a/block/blk-cgroup.h b/block/blk-cgroup.h index 4e595ee8c915..11f5b92d9a47 100644 --- a/block/blk-cgroup.h +++ b/block/blk-cgroup.h | |||
@@ -282,6 +282,26 @@ static inline void blkg_put(struct blkcg_gq *blkg) | |||
282 | __blkg_release(blkg); | 282 | __blkg_release(blkg); |
283 | } | 283 | } |
284 | 284 | ||
285 | struct blkcg_gq *__blkg_lookup(struct blkcg *blkcg, struct request_queue *q, | ||
286 | bool update_hint); | ||
287 | |||
288 | /** | ||
289 | * blkg_for_each_descendant_pre - pre-order walk of a blkg's descendants | ||
290 | * @d_blkg: loop cursor pointing to the current descendant | ||
291 | * @pos_cgrp: used for iteration | ||
292 | * @p_blkg: target blkg to walk descendants of | ||
293 | * | ||
294 | * Walk @c_blkg through the descendants of @p_blkg. Must be used with RCU | ||
295 | * read locked. If called under either blkcg or queue lock, the iteration | ||
296 | * is guaranteed to include all and only online blkgs. The caller may | ||
297 | * update @pos_cgrp by calling cgroup_rightmost_descendant() to skip | ||
298 | * subtree. | ||
299 | */ | ||
300 | #define blkg_for_each_descendant_pre(d_blkg, pos_cgrp, p_blkg) \ | ||
301 | cgroup_for_each_descendant_pre((pos_cgrp), (p_blkg)->blkcg->css.cgroup) \ | ||
302 | if (((d_blkg) = __blkg_lookup(cgroup_to_blkcg(pos_cgrp), \ | ||
303 | (p_blkg)->q, false))) | ||
304 | |||
285 | /** | 305 | /** |
286 | * blk_get_rl - get request_list to use | 306 | * blk_get_rl - get request_list to use |
287 | * @q: request_queue of interest | 307 | * @q: request_queue of interest |