From: Christoph Hellwig <hch@lst.de>
To: Anuj Gupta <anuj1072538@gmail.com>
Cc: kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, axboe@kernel.dk,
asml.silence@gmail.com, joshi.k@samsung.com,
linux-nvme@lists.infradead.org, linux-block@vger.kernel.org,
io-uring@vger.kernel.org, Anuj Gupta <anuj20.g@samsung.com>
Subject: Re: [PATCH] nvme/io_uring: enable dma-buf backed passthrough I/O
Date: Fri, 16 Oct 2026 14:28:36 +0200 [thread overview]
Message-ID: <20261016122836.GB3555@lst.de> (raw)
In-Reply-To: <20261016103453.1129150-1-anuj1072538@gmail.com>
On Fri, Oct 16, 2026 at 04:04:20PM +0530, Anuj Gupta wrote:
> From: Anuj Gupta <anuj20.g@samsung.com>
>
> Allow registering a dma-buf against an NVMe namespace character device
> and using it as the data buffer of fixed uring_cmd passthrough I/O.
>
> io_uring_cmd_import_fixed() now accepts dma-buf buffers and attaches
> the current map. blk_rq_map_user_iov() maps dma-buf iterators directly,
> since they cannot fall back to a bounce copy.
This really needs to be split into blk, io_uring and nvme parts, with
a good commit log for each part.
> +/* Prepare a bio for passthrough I/O from a directly mapped iterator. */
> static int blk_rq_map_user_bvec(struct request *rq, const struct iov_iter *iter)
And adding a comment to an otherwise unrelated function probably also
wants a comment..
> + if (iov_iter_is_dmabuf_map(iter)) {
> + if (map_data || (iov_iter_alignment(iter) & align))
> + return -EINVAL;
> + ret = blk_rq_map_user_bvec(rq, iter);
> + return ret == -EREMOTEIO ? -EINVAL : ret;
The error value remapping could probably also use a comment (and be
turned into an if to stand out).
> +static int nvme_ns_chr_init_dma_buf_io_ctx(struct file *file,
> + struct dma_buf_io_ctx *ctx)
> +{
> + struct nvme_ns *ns = container_of(file_inode(file)->i_cdev,
> + struct nvme_ns, cdev);
struct nvme_ns *ns =
> }
>
> +void io_uring_cmd_detach_dmabuf(struct io_uring_cmd *ioucmd)
> +{
> + io_detach_dmabuf_map(cmd_to_io_kiocb(ioucmd));
> +}
> +EXPORT_SYMBOL_GPL(io_uring_cmd_detach_dmabuf);
Add a comment on when this should be used?
> return -EINVAL;
>
> - return io_import_reg_buf(req, iter, ubuf, len, rw, issue_flags);
> + ret = __io_import_reg_buf(req, iter, ubuf, len, rw, issue_flags,
> + IO_REGBUF_IMPORT_ALLOW_DMABUF);
> + if (ret)
> + return ret;
> + return io_attach_dmabuf_map(req, iter, issue_flags);
No new here, but maybe io_import_reg_buf should take the flags argument
instead of the spurious __variant given how few users there are?
next prev parent reply other threads:[~2026-10-16 12:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-16 10:34 [PATCH] nvme/io_uring: enable dma-buf backed passthrough I/O Anuj Gupta
2026-10-16 10:41 ` Anuj gupta
2026-10-16 12:28 ` Christoph Hellwig [this message]
2026-10-18 22:06 ` Pavel Begunkov
2026-10-19 13:40 ` Anuj Gupta
2026-10-21 14:23 ` Pavel Begunkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261016122836.GB3555@lst.de \
--to=hch@lst.de \
--cc=anuj1072538@gmail.com \
--cc=anuj20.g@samsung.com \
--cc=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
--cc=joshi.k@samsung.com \
--cc=kbusch@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.