mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
nvme: enable vectored registered bufs for passthrough cmds
nvme already supports registered buffers for non-vectored io_uring passthrough commands, enable it for the vectored mode as well. It takes an iovec, each entry of which should contain a range within the same registered buffer specificied in sqe->buf_index. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Reviewed-by: Jens Axboe <axboe@kernel.dk> Reviewed-by: Anuj Gupta <anuj20.g@samsung.com> Reviewed-by: Kanchan Joshi <joshi.k@samsung.com> Reviewed-by: Caleb Sander Mateos <csander@purestorage.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
c4b680ac28
commit
3c12a8939e
|
|
@ -493,13 +493,15 @@ static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
|
|||
d.timeout_ms = READ_ONCE(cmd->timeout_ms);
|
||||
|
||||
if (d.data_len && (ioucmd->flags & IORING_URING_CMD_FIXED)) {
|
||||
/* fixedbufs is only for non-vectored io */
|
||||
if (vec)
|
||||
return -EINVAL;
|
||||
int ddir = nvme_is_write(&c) ? WRITE : READ;
|
||||
|
||||
ret = io_uring_cmd_import_fixed(d.addr, d.data_len,
|
||||
nvme_is_write(&c) ? WRITE : READ, &iter, ioucmd,
|
||||
issue_flags);
|
||||
if (vec)
|
||||
ret = io_uring_cmd_import_fixed_vec(ioucmd,
|
||||
u64_to_user_ptr(d.addr), d.data_len,
|
||||
ddir, &iter, issue_flags);
|
||||
else
|
||||
ret = io_uring_cmd_import_fixed(d.addr, d.data_len,
|
||||
ddir, &iter, ioucmd, issue_flags);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user