diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-25 19:36:35 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-25 19:36:35 +0300 |
commit | 3961cdf85b749f6bab50ad31ee97e9277e7a3b70 (patch) | |
tree | 830ddec331de404b57d3bbd71f7a1998025c41f9 | |
parent | d39dd11c3e6a7af5c20bfac40594db36cf270f42 (diff) | |
parent | ad3d9d7ede04a9c71be7a9fe1a23961817f371f7 (diff) | |
download | linux-3961cdf85b749f6bab50ad31ee97e9277e7a3b70.tar.xz |
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); **/ void blk_stop_queue(struct request_queue *q) { - cancel_delayed_work(&q->delay_work); + __cancel_delayed_work(&q->delay_work); queue_flag_set(QUEUE_FLAG_STOPPED, q); } EXPORT_SYMBOL(blk_stop_queue); @@ -2702,7 +2702,10 @@ static void flush_plug_list(struct blk_plug *plug) /* * rq is already accounted, so use raw insert */ - __elv_add_request(q, rq, ELEVATOR_INSERT_SORT_MERGE); + if (rq->cmd_flags & (REQ_FLUSH | REQ_FUA)) + __elv_add_request(q, rq, ELEVATOR_INSERT_FLUSH); + else + __elv_add_request(q, rq, ELEVATOR_INSERT_SORT_MERGE); } if (q) { |