summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2010-11-09 14:51:13 +0100
committerJens Axboe <jaxboe@fusionio.com>2010-11-09 14:51:13 +0100
commit2b9408a45978dcda77407859148deeccf403c372 (patch)
tree52fc549e7cc879c6dea98554f75da24df31c07cf /block
parent8e1ac6655104bc6e1e79d67e2df88cc8fa9b6e07 (diff)
cfq-iosched: don't schedule a dispatch for a non-idle queue
Vivek suggests we don't need schedule a dispatch when an idle queue becomes nonidle. And he is right, cfq_should_preempt already covers the logic. Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'block')
-rw-r--r--block/cfq-iosched.c19
1 files changed, 1 insertions, 18 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index ca4d1990724..f90519430be 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -3523,25 +3523,8 @@ static void cfq_completed_request(struct request_queue *q, struct request *rq)
}
}
- if (!cfqd->rq_in_driver) {
+ if (!cfqd->rq_in_driver)
cfq_schedule_dispatch(cfqd);
- return;
- }
- /*
- * A queue is idle at cfq_dispatch_requests(), but it gets noidle
- * later. We schedule a dispatch if the queue has no requests,
- * otherwise the disk is actually in idle till all requests
- * are finished even cfq_arm_slice_timer doesn't make the queue idle
- * */
- cfqq = cfqd->active_queue;
- if (!cfqq)
- return;
-
- if (RB_EMPTY_ROOT(&cfqq->sort_list) && !cfq_should_idle(cfqd, cfqq) &&
- (!cfqd->cfq_group_idle || cfqq->cfqg->nr_cfqq > 1)) {
- cfq_del_timer(cfqd, cfqq);
- cfq_schedule_dispatch(cfqd);
- }
}
/*