loop: return proper error from loop_queue_rq()
authorOmar Sandoval <osandov@fb.com>
Mon, 14 Nov 2016 22:56:17 +0000 (14:56 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 6 Jan 2017 10:16:14 +0000 (11:16 +0100)
commit b4a567e8114327518c09f5632339a5954ab975a3 upstream.

->queue_rq() should return one of the BLK_MQ_RQ_QUEUE_* constants, not
an errno.

Fixes: f4aa4c7bbac6 ("block: loop: convert to per-device workqueue")
Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/block/loop.c

index 80cf8add46ff3667d896fca88aaea3fbf338ad27..ab0b2dd3f629baf33ff85c4288996fd79a9595b7 100644 (file)
@@ -1657,7 +1657,7 @@ static int loop_queue_rq(struct blk_mq_hw_ctx *hctx,
        blk_mq_start_request(bd->rq);
 
        if (lo->lo_state != Lo_bound)
-               return -EIO;
+               return BLK_MQ_RQ_QUEUE_ERROR;
 
        if (lo->use_dio && !(cmd->rq->cmd_flags & (REQ_FLUSH |
                                        REQ_DISCARD)))