diff options
-rw-r--r-- | block/cfq-iosched.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index b19cd684bf12..f41fdb5f3e0c 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -319,7 +319,6 @@ enum cfqq_state_flags { | |||
319 | CFQ_CFQQ_FLAG_coop, /* cfqq is shared */ | 319 | CFQ_CFQQ_FLAG_coop, /* cfqq is shared */ |
320 | CFQ_CFQQ_FLAG_deep, /* sync cfqq experienced large depth */ | 320 | CFQ_CFQQ_FLAG_deep, /* sync cfqq experienced large depth */ |
321 | CFQ_CFQQ_FLAG_wait_busy, /* Waiting for next request */ | 321 | CFQ_CFQQ_FLAG_wait_busy, /* Waiting for next request */ |
322 | CFQ_CFQQ_FLAG_wait_busy_done, /* Got new request. Expire the queue */ | ||
323 | }; | 322 | }; |
324 | 323 | ||
325 | #define CFQ_CFQQ_FNS(name) \ | 324 | #define CFQ_CFQQ_FNS(name) \ |
@@ -348,7 +347,6 @@ CFQ_CFQQ_FNS(sync); | |||
348 | CFQ_CFQQ_FNS(coop); | 347 | CFQ_CFQQ_FNS(coop); |
349 | CFQ_CFQQ_FNS(deep); | 348 | CFQ_CFQQ_FNS(deep); |
350 | CFQ_CFQQ_FNS(wait_busy); | 349 | CFQ_CFQQ_FNS(wait_busy); |
351 | CFQ_CFQQ_FNS(wait_busy_done); | ||
352 | #undef CFQ_CFQQ_FNS | 350 | #undef CFQ_CFQQ_FNS |
353 | 351 | ||
354 | #ifdef CONFIG_DEBUG_CFQ_IOSCHED | 352 | #ifdef CONFIG_DEBUG_CFQ_IOSCHED |
@@ -1574,7 +1572,6 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
1574 | 1572 | ||
1575 | cfq_clear_cfqq_wait_request(cfqq); | 1573 | cfq_clear_cfqq_wait_request(cfqq); |
1576 | cfq_clear_cfqq_wait_busy(cfqq); | 1574 | cfq_clear_cfqq_wait_busy(cfqq); |
1577 | cfq_clear_cfqq_wait_busy_done(cfqq); | ||
1578 | 1575 | ||
1579 | /* | 1576 | /* |
1580 | * store what was left of this slice, if the queue idled/timed out | 1577 | * store what was left of this slice, if the queue idled/timed out |
@@ -2134,11 +2131,17 @@ static struct cfq_queue *cfq_select_queue(struct cfq_data *cfqd) | |||
2134 | 2131 | ||
2135 | if (!cfqd->rq_queued) | 2132 | if (!cfqd->rq_queued) |
2136 | return NULL; | 2133 | return NULL; |
2134 | |||
2135 | /* | ||
2136 | * We were waiting for group to get backlogged. Expire the queue | ||
2137 | */ | ||
2138 | if (cfq_cfqq_wait_busy(cfqq) && !RB_EMPTY_ROOT(&cfqq->sort_list)) | ||
2139 | goto expire; | ||
2140 | |||
2137 | /* | 2141 | /* |
2138 | * The active queue has run out of time, expire it and select new. | 2142 | * The active queue has run out of time, expire it and select new. |
2139 | */ | 2143 | */ |
2140 | if ((cfq_slice_used(cfqq) || cfq_cfqq_wait_busy_done(cfqq)) | 2144 | if (cfq_slice_used(cfqq) && !cfq_cfqq_must_dispatch(cfqq)) |
2141 | && !cfq_cfqq_must_dispatch(cfqq)) | ||
2142 | goto expire; | 2145 | goto expire; |
2143 | 2146 | ||
2144 | /* | 2147 | /* |
@@ -3171,10 +3174,6 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
3171 | cfqq->last_request_pos = blk_rq_pos(rq) + blk_rq_sectors(rq); | 3174 | cfqq->last_request_pos = blk_rq_pos(rq) + blk_rq_sectors(rq); |
3172 | 3175 | ||
3173 | if (cfqq == cfqd->active_queue) { | 3176 | if (cfqq == cfqd->active_queue) { |
3174 | if (cfq_cfqq_wait_busy(cfqq)) { | ||
3175 | cfq_clear_cfqq_wait_busy(cfqq); | ||
3176 | cfq_mark_cfqq_wait_busy_done(cfqq); | ||
3177 | } | ||
3178 | /* | 3177 | /* |
3179 | * Remember that we saw a request from this process, but | 3178 | * Remember that we saw a request from this process, but |
3180 | * don't start queuing just yet. Otherwise we risk seeing lots | 3179 | * don't start queuing just yet. Otherwise we risk seeing lots |