ublk: add read()/write() support for ublk char device
authorMing Lei <ming.lei@redhat.com>
Fri, 19 May 2023 06:50:29 +0000 (14:50 +0800)
committerJens Axboe <axboe@kernel.dk>
Sat, 20 May 2023 01:59:17 +0000 (19:59 -0600)
commit62fe99cef94a5900cac3bf15fd03ee8baad1a99c
treebca133e6c07f3b1fc2c074407c218f28eac1b48f
parent38f2dd34410f9070b60969a07ff7d8743b4fd56c
ublk: add read()/write() support for ublk char device

Support pread()/pwrite() on ublk char device for reading/writing request
io buffer, so data copy between io request buffer and userspace buffer
can be moved to ublk server from ublk driver. Then UBLK_F_NEED_GET_DATA
becomes not necessary, so ublk server can allocate buffer without one
extra round uring command communication for userspace to provide buffer.

IO buffer can be located by iocb->ki_pos which encodes buffer offset, io
tag and queue id info, and type of iocb->ki_pos is u64, so it is big
enough for holding reasonable queue depth, nr_queues and max io buffer
size.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20230519065030.351216-7-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ublk_drv.c
include/uapi/linux/ublk_cmd.h