diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-25 12:36:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-25 12:36:35 -0400 |
commit | 3961cdf85b749f6bab50ad31ee97e9277e7a3b70 (patch) | |
tree | 830ddec331de404b57d3bbd71f7a1998025c41f9 | |
parent | d39dd11c3e6a7af5c20bfac40594db36cf270f42 (diff) | |
parent | ad3d9d7ede04a9c71be7a9fe1a23961817f371f7 (diff) |
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block:
block: fix issue with calling blk_stop_queue() from the request_fn handler
block: fix bug with inserting flush requests as sort/merge
-rw-r--r-- | block/blk-core.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 59b5c00c0126..e0a062363937 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -271,7 +271,7 @@ EXPORT_SYMBOL(blk_start_queue); | |||
271 | **/ | 271 | **/ |
272 | void blk_stop_queue(struct request_queue *q) | 272 | void blk_stop_queue(struct request_queue *q) |
273 | { | 273 | { |
274 | cancel_delayed_work(&q->delay_work); | 274 | __cancel_delayed_work(&q->delay_work); |
275 | queue_flag_set(QUEUE_FLAG_STOPPED, q); | 275 | queue_flag_set(QUEUE_FLAG_STOPPED, q); |
276 | } | 276 | } |
277 | EXPORT_SYMBOL(blk_stop_queue); | 277 | EXPORT_SYMBOL(blk_stop_queue); |
@@ -2702,7 +2702,10 @@ static void flush_plug_list(struct blk_plug *plug) | |||
2702 | /* | 2702 | /* |
2703 | * rq is already accounted, so use raw insert | 2703 | * rq is already accounted, so use raw insert |
2704 | */ | 2704 | */ |
2705 | __elv_add_request(q, rq, ELEVATOR_INSERT_SORT_MERGE); | 2705 | if (rq->cmd_flags & (REQ_FLUSH | REQ_FUA)) |
2706 | __elv_add_request(q, rq, ELEVATOR_INSERT_FLUSH); | ||
2707 | else | ||
2708 | __elv_add_request(q, rq, ELEVATOR_INSERT_SORT_MERGE); | ||
2706 | } | 2709 | } |
2707 | 2710 | ||
2708 | if (q) { | 2711 | if (q) { |