This series adds async passthrough capability for nvme block-dev over io_uring. The patches are on top of Jens uring-cmd series: https://lore.kernel.org/linux-nvme/20210317221027.366780-1-axboe@xxxxxxxxx/ https://git.kernel.dk/cgit/linux-block/log/?h=io_uring-fops.v4 The tree contains nvme-5.13 updates (pdu-enhancement patches of Keith) as well. Application is expected to allocate passthrough command structure, set it up traditionally, and pass its address via "block_uring_cmd->unused2[0]" field. On completion, CQE is posted with completion-status after any ioctl specific buffer/field update. Tests are done by transforming fio io_uring read/write into passthrough: https://github.com/joshkan/fio/tree/uring_cmd_nvme_v4 Changes from v3: 1. Moved to v4 branch of Jens, adapted to interface changes 2. Extended support for NVME_IOCTL_IO_CMD64 3. Applied nvme feedback - hch, Keith 4. Appiled io_uring feedback - Jens, Stefan 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 (2): io_uring: add helpers for io_uring_cmd completion in submitter-task. nvme: wire up support for async passthrough drivers/nvme/host/core.c | 194 +++++++++++++++++++++++++++++++++------ drivers/nvme/host/nvme.h | 3 + drivers/nvme/host/pci.c | 1 + fs/io_uring.c | 23 +++++ include/linux/io_uring.h | 12 +++ 5 files changed, 206 insertions(+), 27 deletions(-) -- 2.25.1