Re: [PATCH v4 9/9] nvme-rdma: return BLK_STS_P2PDMA for unsupported P2P transfers
From: Logan Gunthorpe
Date: Wed Jul 22 2026 - 18:00:39 EST
On 2026-07-22 12:58, Mykola Marzhan wrote:
> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
> index 6909e3542794..2f50509a7a61 100644
> --- a/drivers/nvme/host/rdma.c
> +++ b/drivers/nvme/host/rdma.c
> @@ -1469,6 +1469,7 @@ static int nvme_rdma_dma_map_req(struct ib_device *ibdev, struct request *rq,
> int *count, int *pi_count)
> {
> struct nvme_rdma_request *req = blk_mq_rq_to_pdu(rq);
> + struct sg_table sgt;
> int ret;
>
> req->data_sgl.sg_table.sgl = (struct scatterlist *)(req + 1);
> @@ -1480,12 +1481,14 @@ static int nvme_rdma_dma_map_req(struct ib_device *ibdev, struct request *rq,
>
> req->data_sgl.nents = blk_rq_map_sg(rq, req->data_sgl.sg_table.sgl);
>
> - *count = ib_dma_map_sg(ibdev, req->data_sgl.sg_table.sgl,
> - req->data_sgl.nents, rq_dma_dir(rq));
> - if (unlikely(*count <= 0)) {
> - ret = -EIO;
> + sgt = (struct sg_table) {
> + .sgl = req->data_sgl.sg_table.sgl,
> + .orig_nents = req->data_sgl.nents,
> + };
Maybe we could make this patch a little clearer by splitting the change
to sg_table into it's own patch? That would make it much easier for me
to review. I've looked through it now a couple times and think it's ok,
but it's a little more complex than I can really untangle in my head.
Per your other email, I think that will make things good from my
perspective for v5, but I reserve the right to find something new when I
look at it ;)
Thanks for your efforts cleaning this up.
Logan