[PATCHv8 0/6] ublk zero copy support

Keith Busch
2025-02-27T22:39:26Z

From: Keith Busch <kbusch@kernel.org>

This one completed liburing 'make runtests' successfully.

Changes from v7:

Prep patch, mostly from Jens, that removes the "do_import" parameter
from the generic rw prep.

Added check for kernel buffers in rw's loop submit. This file
operation requires __user pointers, so can't use it there (Pavel)

Added a bool, is_kbuf, so that we don't use the existence of the
"release" callback to distinguish user vs kernel buffers. And had user
buffers define its own release function so that we can remove a branch
check on free.

The io node and imu caching is moved from the table to ring ctx. This
is the simplest solution to situations where the node outlives the
table it came from.

Fixed missing (parens) logical error checking for ublk flags.

Minor cleanups to reduce diff churn.

Keith Busch (5):
io_uring/rw: move buffer_select outside generic prep
io_uring/rw: move fixed buffer import to issue path
io_uring: add support for kernel registered bvecs
ublk: zc register/unregister bvec
io_uring: cache nodes and mapped buffers

Xinyu Zhang (1):
nvme: map uring_cmd data even if address is 0

drivers/block/ublk_drv.c | 59 ++++++++--
drivers/nvme/host/ioctl.c | 2 +-
include/linux/io_uring/cmd.h | 7 ++
include/linux/io_uring_types.h | 2 +
include/uapi/linux/ublk_cmd.h | 4 +
io_uring/filetable.c | 2 +-
io_uring/io_uring.c | 5 +
io_uring/opdef.c | 4 +-
io_uring/rsrc.c | 189 +++++++++++++++++++++++++++++----
io_uring/rsrc.h | 13 ++-
io_uring/rw.c | 85 ++++++++++-----
io_uring/rw.h | 2 +
12 files changed, 318 insertions(+), 56 deletions(-)

--
2.43.5