diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2007-01-19 02:01:16 +0100 |
---|---|---|
committer | Jens Axboe <axboe@carl.home.kernel.dk> | 2007-02-11 23:14:45 +0100 |
commit | cb8874119e9a3ec38c45942808c91cfbc014f402 (patch) | |
tree | 410562c9c72499ab208b5526fb35736c48520638 /block/cfq-iosched.c | |
parent | cfq-iosched: don't pass in queue for cfq_arm_slice_timer() (diff) | |
download | linux-cb8874119e9a3ec38c45942808c91cfbc014f402.tar.xz linux-cb8874119e9a3ec38c45942808c91cfbc014f402.zip |
cfq-iosched: tweak the FIFO checking
We currently check the FIFO once per slice. Optimize that a bit and
only do it as the first thing for a new slice, so we don't end up
doing a single request and then seek to the FIFO requests.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 3df41a00b553..03b1e474b2bf 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -885,16 +885,17 @@ static inline struct request *cfq_check_fifo(struct cfq_queue *cfqq) if (cfq_cfqq_fifo_expire(cfqq)) return NULL; + + cfq_mark_cfqq_fifo_expire(cfqq); + if (list_empty(&cfqq->fifo)) return NULL; fifo = cfq_cfqq_class_sync(cfqq); rq = rq_entry_fifo(cfqq->fifo.next); - if (time_after(jiffies, rq->start_time + cfqd->cfq_fifo_expire[fifo])) { - cfq_mark_cfqq_fifo_expire(cfqq); + if (time_after(jiffies, rq->start_time + cfqd->cfq_fifo_expire[fifo])) return rq; - } return NULL; } |