This series adds async passthrough capability for nvme block-dev over iouring_cmd. The patches are on top of Jens uring-cmd branch: https://git.kernel.dk/cgit/linux-block/log/?h=io_uring-fops.v3 Application is expected to allocate passthrough command structure, set it up traditionally, and pass its address via "block_uring_cmd->addr". On completion, CQE is posted with completion-status after any ioctl specific buffer/field update. Changes from v2: 1. Rebase against latest uring-cmd branch of Jens 2. Remove per-io nvme_command allocation 3. Disallow passthrough commands with non-zero command effects Change from v1: 1. Rewire the work on top of Jens uring-cmd interface 2. Support only passthrough, and not other nvme ioctls Kanchan Joshi (3): io_uring: add helper for uring_cmd completion in submitter-task nvme: keep nvme_command instead of pointer to it nvme: wire up support for async passthrough drivers/nvme/host/core.c | 186 ++++++++++++++++++++++++++++++----- drivers/nvme/host/fabrics.c | 4 +- drivers/nvme/host/lightnvm.c | 16 +-- drivers/nvme/host/nvme.h | 5 +- drivers/nvme/host/pci.c | 1 + fs/io_uring.c | 36 ++++++- include/linux/io_uring.h | 8 ++ 7 files changed, 213 insertions(+), 43 deletions(-) -- 2.25.1