diff options
author | Mike Anderson <andmike@linux.vnet.ibm.com> | 2008-10-30 02:16:20 -0700 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-11-06 08:41:56 +0100 |
commit | e78042e5b83936b1d12a4b5bbb492bdd88ad76c6 (patch) | |
tree | bd65da0f0f87c844fb4a22c5c56822a5ff15165b | |
parent | 2920ebbd65f3e80c318adf5191ac0987142bda80 (diff) | |
download | op-kernel-dev-e78042e5b83936b1d12a4b5bbb492bdd88ad76c6.zip op-kernel-dev-e78042e5b83936b1d12a4b5bbb492bdd88ad76c6.tar.gz |
blk: move blk_delete_timer call in end_that_request_last
Move the calling blk_delete_timer to later in end_that_request_last to
address an issue where blkdev_dequeue_request may have add a timer for the
request.
Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r-- | block/blk-core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index c3df30c..10e8a64 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1770,8 +1770,6 @@ static void end_that_request_last(struct request *req, int error) { struct gendisk *disk = req->rq_disk; - blk_delete_timer(req); - if (blk_rq_tagged(req)) blk_queue_end_tag(req->q, req); @@ -1781,6 +1779,8 @@ static void end_that_request_last(struct request *req, int error) if (unlikely(laptop_mode) && blk_fs_request(req)) laptop_io_completion(); + blk_delete_timer(req); + /* * Account IO completion. bar_rq isn't accounted as a normal * IO on queueing nor completion. Accounting the containing |