nvmf regression with mq-deadline
Jens Axboe
axboe at kernel.dk
Mon Feb 27 07:33:33 PST 2017
On Mon, Feb 27 2017, Sagi Grimberg wrote:
>
> >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?
Thanks Sagi, yes please send a proper patch for those two conditions!
--
Jens Axboe
More information about the Linux-nvme
mailing list