diff options
| author | Tejun Heo <tj@kernel.org> | 2012-11-06 15:26:23 -0500 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2012-11-06 15:26:23 -0500 |
| commit | 5b805f2a7675634fbdf9ac1c9b2256905ab2ea68 (patch) | |
| tree | ee00d1e3d757458d66209b926d274491c6c3f61c /block | |
| parent | 1db1e31b1ee3ae126ef98f39083b5f213c7b41bf (diff) | |
| parent | 201e72acb2d3821e2de9ce6091e98859c316b29a (diff) | |
Merge branch 'cgroup/for-3.7-fixes' into cgroup/for-3.8
This is to receive device_cgroup fixes so that further device_cgroup
changes can be made in cgroup/for-3.8.
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'block')
| -rw-r--r-- | block/Kconfig | 2 | ||||
| -rw-r--r-- | block/blk-cgroup.c | 10 | ||||
| -rw-r--r-- | block/blk-core.c | 3 |
3 files changed, 13 insertions, 2 deletions
diff --git a/block/Kconfig b/block/Kconfig index 09acf1b39905..a7e40a7c8214 100644 --- a/block/Kconfig +++ b/block/Kconfig | |||
| @@ -89,7 +89,7 @@ config BLK_DEV_INTEGRITY | |||
| 89 | 89 | ||
| 90 | config BLK_DEV_THROTTLING | 90 | config BLK_DEV_THROTTLING |
| 91 | bool "Block layer bio throttling support" | 91 | bool "Block layer bio throttling support" |
| 92 | depends on BLK_CGROUP=y && EXPERIMENTAL | 92 | depends on BLK_CGROUP=y |
| 93 | default n | 93 | default n |
| 94 | ---help--- | 94 | ---help--- |
| 95 | Block layer bio throttling support. It can be used to limit | 95 | Block layer bio throttling support. It can be used to limit |
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 6ce36ff98a41..3dc60fc441cb 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c | |||
| @@ -285,6 +285,13 @@ static void blkg_destroy_all(struct request_queue *q) | |||
| 285 | blkg_destroy(blkg); | 285 | blkg_destroy(blkg); |
| 286 | spin_unlock(&blkcg->lock); | 286 | spin_unlock(&blkcg->lock); |
| 287 | } | 287 | } |
| 288 | |||
| 289 | /* | ||
| 290 | * root blkg is destroyed. Just clear the pointer since | ||
| 291 | * root_rl does not take reference on root blkg. | ||
| 292 | */ | ||
| 293 | q->root_blkg = NULL; | ||
| 294 | q->root_rl.blkg = NULL; | ||
| 288 | } | 295 | } |
| 289 | 296 | ||
| 290 | static void blkg_rcu_free(struct rcu_head *rcu_head) | 297 | static void blkg_rcu_free(struct rcu_head *rcu_head) |
| @@ -326,6 +333,9 @@ struct request_list *__blk_queue_next_rl(struct request_list *rl, | |||
| 326 | */ | 333 | */ |
| 327 | if (rl == &q->root_rl) { | 334 | if (rl == &q->root_rl) { |
| 328 | ent = &q->blkg_list; | 335 | ent = &q->blkg_list; |
| 336 | /* There are no more block groups, hence no request lists */ | ||
| 337 | if (list_empty(ent)) | ||
| 338 | return NULL; | ||
| 329 | } else { | 339 | } else { |
| 330 | blkg = container_of(rl, struct blkcg_gq, rl); | 340 | blkg = container_of(rl, struct blkcg_gq, rl); |
| 331 | ent = &blkg->q_node; | 341 | ent = &blkg->q_node; |
diff --git a/block/blk-core.c b/block/blk-core.c index a33870b1847b..3c95c4d6e31a 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
| @@ -2868,7 +2868,8 @@ static int plug_rq_cmp(void *priv, struct list_head *a, struct list_head *b) | |||
| 2868 | struct request *rqa = container_of(a, struct request, queuelist); | 2868 | struct request *rqa = container_of(a, struct request, queuelist); |
| 2869 | struct request *rqb = container_of(b, struct request, queuelist); | 2869 | struct request *rqb = container_of(b, struct request, queuelist); |
| 2870 | 2870 | ||
| 2871 | return !(rqa->q <= rqb->q); | 2871 | return !(rqa->q < rqb->q || |
| 2872 | (rqa->q == rqb->q && blk_rq_pos(rqa) < blk_rq_pos(rqb))); | ||
| 2872 | } | 2873 | } |
| 2873 | 2874 | ||
| 2874 | /* | 2875 | /* |
