diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2007-01-18 20:09:53 -0500 |
---|---|---|
committer | Jens Axboe <axboe@carl.home.kernel.dk> | 2007-02-11 17:14:45 -0500 |
commit | 28f95cbc3ec01f2c7d248e1a4a384f37e9c2ab16 (patch) | |
tree | 81981dbecdfbf657bb0b099cd23fb794789b3cc2 /block/cfq-iosched.c | |
parent | 3c6bd2f879d2c12ce369fe5f75e608ac7bacf01a (diff) |
cfq-iosched: remove the implicit queue kicking in slice expire
We only really need it for a process going away, so move it to
those locations.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index bf571b2b7d76..6aa5523f514c 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -693,9 +693,6 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
693 | if (cfq_cfqq_wait_request(cfqq)) | 693 | if (cfq_cfqq_wait_request(cfqq)) |
694 | del_timer(&cfqd->idle_slice_timer); | 694 | del_timer(&cfqd->idle_slice_timer); |
695 | 695 | ||
696 | if (!preempted && !cfq_cfqq_dispatched(cfqq)) | ||
697 | cfq_schedule_dispatch(cfqd); | ||
698 | |||
699 | cfq_clear_cfqq_must_dispatch(cfqq); | 696 | cfq_clear_cfqq_must_dispatch(cfqq); |
700 | cfq_clear_cfqq_wait_request(cfqq); | 697 | cfq_clear_cfqq_wait_request(cfqq); |
701 | cfq_clear_cfqq_queue_new(cfqq); | 698 | cfq_clear_cfqq_queue_new(cfqq); |
@@ -1102,8 +1099,10 @@ static void cfq_put_queue(struct cfq_queue *cfqq) | |||
1102 | BUG_ON(cfqq->allocated[READ] + cfqq->allocated[WRITE]); | 1099 | BUG_ON(cfqq->allocated[READ] + cfqq->allocated[WRITE]); |
1103 | BUG_ON(cfq_cfqq_on_rr(cfqq)); | 1100 | BUG_ON(cfq_cfqq_on_rr(cfqq)); |
1104 | 1101 | ||
1105 | if (unlikely(cfqd->active_queue == cfqq)) | 1102 | if (unlikely(cfqd->active_queue == cfqq)) { |
1106 | __cfq_slice_expired(cfqd, cfqq, 0, 0); | 1103 | __cfq_slice_expired(cfqd, cfqq, 0, 0); |
1104 | cfq_schedule_dispatch(cfqd); | ||
1105 | } | ||
1107 | 1106 | ||
1108 | /* | 1107 | /* |
1109 | * it's on the empty list and still hashed | 1108 | * it's on the empty list and still hashed |
@@ -1158,8 +1157,10 @@ static void cfq_free_io_context(struct io_context *ioc) | |||
1158 | 1157 | ||
1159 | static void cfq_exit_cfqq(struct cfq_data *cfqd, struct cfq_queue *cfqq) | 1158 | static void cfq_exit_cfqq(struct cfq_data *cfqd, struct cfq_queue *cfqq) |
1160 | { | 1159 | { |
1161 | if (unlikely(cfqq == cfqd->active_queue)) | 1160 | if (unlikely(cfqq == cfqd->active_queue)) { |
1162 | __cfq_slice_expired(cfqd, cfqq, 0, 0); | 1161 | __cfq_slice_expired(cfqd, cfqq, 0, 0); |
1162 | cfq_schedule_dispatch(cfqd); | ||
1163 | } | ||
1163 | 1164 | ||
1164 | cfq_put_queue(cfqq); | 1165 | cfq_put_queue(cfqq); |
1165 | } | 1166 | } |
@@ -1565,7 +1566,6 @@ cfq_update_idle_window(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
1565 | cfq_clear_cfqq_idle_window(cfqq); | 1566 | cfq_clear_cfqq_idle_window(cfqq); |
1566 | } | 1567 | } |
1567 | 1568 | ||
1568 | |||
1569 | /* | 1569 | /* |
1570 | * Check if new_cfqq should preempt the currently active queue. Return 0 for | 1570 | * Check if new_cfqq should preempt the currently active queue. Return 0 for |
1571 | * no or if we aren't sure, a 1 will cause a preempt. | 1571 | * no or if we aren't sure, a 1 will cause a preempt. |