diff options
| -rw-r--r-- | block/blk-tag.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/block/blk-tag.c b/block/blk-tag.c index cc345e1d8d4e..3f33d8672268 100644 --- a/block/blk-tag.c +++ b/block/blk-tag.c | |||
| @@ -348,9 +348,16 @@ int blk_queue_start_tag(struct request_queue *q, struct request *rq) | |||
| 348 | */ | 348 | */ |
| 349 | max_depth = bqt->max_depth; | 349 | max_depth = bqt->max_depth; |
| 350 | if (!rq_is_sync(rq) && max_depth > 1) { | 350 | if (!rq_is_sync(rq) && max_depth > 1) { |
| 351 | max_depth -= 2; | 351 | switch (max_depth) { |
| 352 | if (!max_depth) | 352 | case 2: |
| 353 | max_depth = 1; | 353 | max_depth = 1; |
| 354 | break; | ||
| 355 | case 3: | ||
| 356 | max_depth = 2; | ||
| 357 | break; | ||
| 358 | default: | ||
| 359 | max_depth -= 2; | ||
| 360 | } | ||
| 354 | if (q->in_flight[BLK_RW_ASYNC] > max_depth) | 361 | if (q->in_flight[BLK_RW_ASYNC] > max_depth) |
| 355 | return 1; | 362 | return 1; |
| 356 | } | 363 | } |
