nvmf regression with mq-deadline
Sagi Grimberg
sagi at grimberg.me
Mon Feb 27 06:39:03 PST 2017
> Now I'm getting a NULL deref with nvme-rdma [1].
>
> For some reason blk_mq_tag_to_rq() is returning NULL on
> tag 0x0 which is io queue connect.
>
> I'll try to see where this is coming from.
> This does not happen with loop though...
That's because the loop driver does not rely on the
cqe.command_id to resolve the submitted request (I'll
fix that).
Looks like blk_mq_alloc_request_hctx was overlooked when
the back assignment of the request to the rq_map...
This patch solves the issue for fabrics:
--
diff --git a/block/blk-mq.c b/block/blk-mq.c
index d84c66fb37b7..9611cd9920e9 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -312,6 +312,7 @@ struct request *blk_mq_alloc_request_hctx(struct
request_queue *q, int rw,
ret = -EWOULDBLOCK;
goto out_queue_exit;
}
+ alloc_data.hctx->tags->rqs[rq->tag] = rq;
return rq;
--
If its agreed with everyone I'll send a proper patch
for this and the blk_mq_sched_setup fix?
More information about the Linux-nvme
mailing list