diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2008-11-19 14:38:39 +0100 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-12-29 08:28:42 +0100 |
commit | 70ed28b92a786f44750ab64117b03d126dd14656 (patch) | |
tree | 03e84c48c262b380fbcccb21f55ff979aaeb4e77 /block/blk-core.c | |
parent | block: add comment in blk_rq_timed_out() about why next can not be 0 (diff) | |
download | linux-70ed28b92a786f44750ab64117b03d126dd14656.tar.xz linux-70ed28b92a786f44750ab64117b03d126dd14656.zip |
block: leave the request timeout timer running even on an empty list
For sync IO, we'll often do them serialized. This means we'll be touching
the queue timer for every IO, as opposed to only occasionally like we
do for queued IO. Instead of deleting the timer when the last request
is removed, just let continue running. If a new request comes up soon
we then don't have to readd the timer again. If no new requests arrive,
the timer will expire without side effect later.
This improves high iops sync IO by ~1%.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/blk-core.c')
-rw-r--r-- | block/blk-core.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 561e8a1b43a4..243d18b4ceb0 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -404,6 +404,7 @@ EXPORT_SYMBOL(blk_stop_queue); void blk_sync_queue(struct request_queue *q) { del_timer_sync(&q->unplug_timer); + del_timer_sync(&q->timeout); kblockd_flush_work(&q->unplug_work); } EXPORT_SYMBOL(blk_sync_queue); |