]> Pileus Git - ~andy/linux/blobdiff - block/blk-tag.c
Linux 3.14
[~andy/linux] / block / blk-tag.c
index cc345e1d8d4ea0088832833ef985d6b1e764fa44..3f33d86722688a4f50ac0064488540d1960447fb 100644 (file)
@@ -348,9 +348,16 @@ int blk_queue_start_tag(struct request_queue *q, struct request *rq)
         */
        max_depth = bqt->max_depth;
        if (!rq_is_sync(rq) && max_depth > 1) {
-               max_depth -= 2;
-               if (!max_depth)
+               switch (max_depth) {
+               case 2:
                        max_depth = 1;
+                       break;
+               case 3:
+                       max_depth = 2;
+                       break;
+               default:
+                       max_depth -= 2;
+               }
                if (q->in_flight[BLK_RW_ASYNC] > max_depth)
                        return 1;
        }