Patch 1 is a fix. Patches 2-7 are cleanups mainly dealing with issue_flags conversions, misundertsandings of the flags and of the tw state. It'd be great to have even without even w/o the rest. 8-11 mandate ctx locking for task_work and finally removes the CQE caches, instead we post directly into the CQ. Note that the cache is used by multishot auxiliary completions. The nvme cmd change is tested with io_uring_passthrough.c, however it doesn't seem there is anything in liburing exercising ublk paths. How do we test it? It'd be great to have at least some basic tests for it. Pavel Begunkov (11): io_uring: fix poll_remove stalled req completion io_uring/cmd: kill one issue_flags to tw conversion io_uring/cmd: fix tw <-> issue_flags conversion io_uring/cmd: introduce io_uring_cmd_complete ublk: don't hard code IO_URING_F_UNLOCKED nvme/io_uring: don't hard code IO_URING_F_UNLOCKED io_uring/rw: avoid punting to io-wq directly io_uring: force tw ctx locking io_uring: remove struct io_tw_state::locked io_uring: refactor io_fill_cqe_req_aux io_uring: get rid of intermediate aux cqe caches drivers/block/ublk_drv.c | 18 ++--- drivers/nvme/host/ioctl.c | 9 ++- include/linux/io_uring/cmd.h | 24 ++++++ include/linux/io_uring_types.h | 5 +- io_uring/io_uring.c | 132 +++++++++------------------------ io_uring/io_uring.h | 8 +- io_uring/net.c | 6 +- io_uring/poll.c | 7 +- io_uring/rw.c | 18 +---- io_uring/timeout.c | 8 +- io_uring/uring_cmd.c | 14 ++-- io_uring/waitid.c | 2 +- 12 files changed, 95 insertions(+), 156 deletions(-) -- 2.43.0