blk-mq: Exit queue on alloc failure
authorKeith Busch <keith.busch@intel.com>
Sat, 20 Dec 2014 00:54:13 +0000 (17:54 -0700)
committerJens Axboe <axboe@fb.com>
Sat, 20 Dec 2014 17:33:53 +0000 (10:33 -0700)
Fixes usage counter when a request could not be allocated.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-mq.c

index da1ab5641227b670faac42a84fde7e223668a4d8..bfe0f1f9cfa037d7b875e8f81a715ee0ba8a75f2 100644 (file)
@@ -258,8 +258,10 @@ struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp,
                ctx = alloc_data.ctx;
        }
        blk_mq_put_ctx(ctx);
-       if (!rq)
+       if (!rq) {
+               blk_mq_queue_exit(q);
                return ERR_PTR(-EWOULDBLOCK);
+       }
        return rq;
 }
 EXPORT_SYMBOL(blk_mq_alloc_request);