diff options
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index a0102a507dae..11efcf196e74 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -179,11 +179,9 @@ enum cfqq_state_flags { | |||
179 | CFQ_CFQQ_FLAG_wait_request, /* waiting for a request */ | 179 | CFQ_CFQQ_FLAG_wait_request, /* waiting for a request */ |
180 | CFQ_CFQQ_FLAG_must_alloc, /* must be allowed rq alloc */ | 180 | CFQ_CFQQ_FLAG_must_alloc, /* must be allowed rq alloc */ |
181 | CFQ_CFQQ_FLAG_must_alloc_slice, /* per-slice must_alloc flag */ | 181 | CFQ_CFQQ_FLAG_must_alloc_slice, /* per-slice must_alloc flag */ |
182 | CFQ_CFQQ_FLAG_must_dispatch, /* must dispatch, even if expired */ | ||
183 | CFQ_CFQQ_FLAG_fifo_expire, /* FIFO checked in this slice */ | 182 | CFQ_CFQQ_FLAG_fifo_expire, /* FIFO checked in this slice */ |
184 | CFQ_CFQQ_FLAG_idle_window, /* slice idling enabled */ | 183 | CFQ_CFQQ_FLAG_idle_window, /* slice idling enabled */ |
185 | CFQ_CFQQ_FLAG_prio_changed, /* task priority has changed */ | 184 | CFQ_CFQQ_FLAG_prio_changed, /* task priority has changed */ |
186 | CFQ_CFQQ_FLAG_queue_new, /* queue never been serviced */ | ||
187 | CFQ_CFQQ_FLAG_slice_new, /* no requests dispatched in slice */ | 185 | CFQ_CFQQ_FLAG_slice_new, /* no requests dispatched in slice */ |
188 | CFQ_CFQQ_FLAG_sync, /* synchronous queue */ | 186 | CFQ_CFQQ_FLAG_sync, /* synchronous queue */ |
189 | }; | 187 | }; |
@@ -206,11 +204,9 @@ CFQ_CFQQ_FNS(on_rr); | |||
206 | CFQ_CFQQ_FNS(wait_request); | 204 | CFQ_CFQQ_FNS(wait_request); |
207 | CFQ_CFQQ_FNS(must_alloc); | 205 | CFQ_CFQQ_FNS(must_alloc); |
208 | CFQ_CFQQ_FNS(must_alloc_slice); | 206 | CFQ_CFQQ_FNS(must_alloc_slice); |
209 | CFQ_CFQQ_FNS(must_dispatch); | ||
210 | CFQ_CFQQ_FNS(fifo_expire); | 207 | CFQ_CFQQ_FNS(fifo_expire); |
211 | CFQ_CFQQ_FNS(idle_window); | 208 | CFQ_CFQQ_FNS(idle_window); |
212 | CFQ_CFQQ_FNS(prio_changed); | 209 | CFQ_CFQQ_FNS(prio_changed); |
213 | CFQ_CFQQ_FNS(queue_new); | ||
214 | CFQ_CFQQ_FNS(slice_new); | 210 | CFQ_CFQQ_FNS(slice_new); |
215 | CFQ_CFQQ_FNS(sync); | 211 | CFQ_CFQQ_FNS(sync); |
216 | #undef CFQ_CFQQ_FNS | 212 | #undef CFQ_CFQQ_FNS |
@@ -777,12 +773,10 @@ static void __cfq_set_active_queue(struct cfq_data *cfqd, | |||
777 | cfqq->slice_end = 0; | 773 | cfqq->slice_end = 0; |
778 | cfqq->slice_dispatch = 0; | 774 | cfqq->slice_dispatch = 0; |
779 | 775 | ||
780 | cfq_clear_cfqq_must_dispatch(cfqq); | ||
781 | cfq_clear_cfqq_wait_request(cfqq); | 776 | cfq_clear_cfqq_wait_request(cfqq); |
782 | cfq_clear_cfqq_must_alloc_slice(cfqq); | 777 | cfq_clear_cfqq_must_alloc_slice(cfqq); |
783 | cfq_clear_cfqq_fifo_expire(cfqq); | 778 | cfq_clear_cfqq_fifo_expire(cfqq); |
784 | cfq_mark_cfqq_slice_new(cfqq); | 779 | cfq_mark_cfqq_slice_new(cfqq); |
785 | cfq_clear_cfqq_queue_new(cfqq); | ||
786 | 780 | ||
787 | del_timer(&cfqd->idle_slice_timer); | 781 | del_timer(&cfqd->idle_slice_timer); |
788 | } | 782 | } |
@@ -802,7 +796,6 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
802 | if (cfq_cfqq_wait_request(cfqq)) | 796 | if (cfq_cfqq_wait_request(cfqq)) |
803 | del_timer(&cfqd->idle_slice_timer); | 797 | del_timer(&cfqd->idle_slice_timer); |
804 | 798 | ||
805 | cfq_clear_cfqq_must_dispatch(cfqq); | ||
806 | cfq_clear_cfqq_wait_request(cfqq); | 799 | cfq_clear_cfqq_wait_request(cfqq); |
807 | 800 | ||
808 | /* | 801 | /* |
@@ -931,7 +924,6 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd) | |||
931 | (sample_valid(cic->ttime_samples) && cic->ttime_mean > 2)) | 924 | (sample_valid(cic->ttime_samples) && cic->ttime_mean > 2)) |
932 | return; | 925 | return; |
933 | 926 | ||
934 | cfq_mark_cfqq_must_dispatch(cfqq); | ||
935 | cfq_mark_cfqq_wait_request(cfqq); | 927 | cfq_mark_cfqq_wait_request(cfqq); |
936 | 928 | ||
937 | /* | 929 | /* |
@@ -1520,7 +1512,6 @@ retry: | |||
1520 | cfqq->cfqd = cfqd; | 1512 | cfqq->cfqd = cfqd; |
1521 | 1513 | ||
1522 | cfq_mark_cfqq_prio_changed(cfqq); | 1514 | cfq_mark_cfqq_prio_changed(cfqq); |
1523 | cfq_mark_cfqq_queue_new(cfqq); | ||
1524 | 1515 | ||
1525 | cfq_init_prio_data(cfqq, ioc); | 1516 | cfq_init_prio_data(cfqq, ioc); |
1526 | 1517 | ||
@@ -1912,7 +1903,6 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
1912 | * just now | 1903 | * just now |
1913 | */ | 1904 | */ |
1914 | if (cfq_cfqq_wait_request(cfqq)) { | 1905 | if (cfq_cfqq_wait_request(cfqq)) { |
1915 | cfq_mark_cfqq_must_dispatch(cfqq); | ||
1916 | del_timer(&cfqd->idle_slice_timer); | 1906 | del_timer(&cfqd->idle_slice_timer); |
1917 | blk_start_queueing(cfqd->queue); | 1907 | blk_start_queueing(cfqd->queue); |
1918 | } | 1908 | } |
@@ -1924,7 +1914,6 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
1924 | * this new queue is RT and the current one is BE | 1914 | * this new queue is RT and the current one is BE |
1925 | */ | 1915 | */ |
1926 | cfq_preempt_queue(cfqd, cfqq); | 1916 | cfq_preempt_queue(cfqd, cfqq); |
1927 | cfq_mark_cfqq_must_dispatch(cfqq); | ||
1928 | blk_start_queueing(cfqd->queue); | 1917 | blk_start_queueing(cfqd->queue); |
1929 | } | 1918 | } |
1930 | } | 1919 | } |
@@ -2201,10 +2190,8 @@ static void cfq_idle_slice_timer(unsigned long data) | |||
2201 | /* | 2190 | /* |
2202 | * not expired and it has a request pending, let it dispatch | 2191 | * not expired and it has a request pending, let it dispatch |
2203 | */ | 2192 | */ |
2204 | if (!RB_EMPTY_ROOT(&cfqq->sort_list)) { | 2193 | if (!RB_EMPTY_ROOT(&cfqq->sort_list)) |
2205 | cfq_mark_cfqq_must_dispatch(cfqq); | ||
2206 | goto out_kick; | 2194 | goto out_kick; |
2207 | } | ||
2208 | } | 2195 | } |
2209 | expire: | 2196 | expire: |
2210 | cfq_slice_expired(cfqd, timed_out); | 2197 | cfq_slice_expired(cfqd, timed_out); |