Mandate ctx locking for task_work. Then, remove aux CQE caches mostly used by multishot requests and post them directly into the CQ. It's leaving some of the pre existing issue_flags and state conversion non conformant chunks, which will need to clean up later. v3: pass IO_URING_F_COMPLETE_DEFER to the cmd cancellation path drop patch moving request cancellation list removal to tw drop all other ublk changes v2: Add Patch 3, which fixes deadlock due to nested locking introduced in v1 Remove a fix, which was taken separately Pile up more cleanups (Patches 12-14) Pavel Begunkov (13): io_uring/cmd: move io_uring_try_cancel_uring_cmd() 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 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 io_uring: remove current check from complete_post io_uring: refactor io_req_complete_post() io_uring: clean up io_lockdep_assert_cq_locked drivers/nvme/host/ioctl.c | 9 +- include/linux/io_uring/cmd.h | 28 +++++ include/linux/io_uring_types.h | 5 +- io_uring/io_uring.c | 198 ++++++++------------------------- io_uring/io_uring.h | 24 ++-- io_uring/net.c | 6 +- io_uring/poll.c | 3 +- io_uring/rw.c | 18 +-- io_uring/timeout.c | 8 +- io_uring/uring_cmd.c | 45 +++++++- io_uring/uring_cmd.h | 3 + io_uring/waitid.c | 2 +- 12 files changed, 143 insertions(+), 206 deletions(-) -- 2.44.0