This series adds support for measuring peak performance of uring-passthrough path using t/io_uring utility. Added new -u1 option, that makes t/io_uring to do io using nvme passthrough commands. Uring-passthrough on nvme-generic device: root@test-MS-7C34:/home/test/upstream/github/fio# taskset -c 0 t/io_uring -b512 -d128 -c32 -s32 -p0 -F1 -B0 -O0 -n1 -u1 /dev/ng0n1 submitter=0, tid=5415, file=/dev/ng0n1, node=-1 polled=0, fixedbufs=0/0, register_files=1, buffered=1, QD=128 Engine=io_uring, sq_ring=128, cq_ring=128 IOPS=1.97M, BW=959MiB/s, IOS/call=32/31 IOPS=1.96M, BW=956MiB/s, IOS/call=32/32 IOPS=1.96M, BW=957MiB/s, IOS/call=32/32 IOPS=1.96M, BW=956MiB/s, IOS/call=31/31 ^CExiting on signal Maximum IOPS=1.97M Regular io_uring on nvme-block device: root@test-MS-7C34:/home/test/upstream/github/fio# taskset -c 0 t/io_uring -b512 -d128 -c32 -s32 -p0 -F1 -B0 -n1 /dev/nvme0n1 submitter=0, tid=5418, file=/dev/nvme0n1, node=-1 polled=0, fixedbufs=0/0, register_files=1, buffered=0, QD=128 Engine=io_uring, sq_ring=128, cq_ring=128 IOPS=1.53M, BW=748MiB/s, IOS/call=32/31 IOPS=1.53M, BW=746MiB/s, IOS/call=32/32 IOPS=1.53M, BW=746MiB/s, IOS/call=32/32 IOPS=1.53M, BW=745MiB/s, IOS/call=32/32 IOPS=1.53M, BW=745MiB/s, IOS/call=32/32 ^CExiting on signal Maximum IOPS=1.53M Changes since v1: https://lore.kernel.org/fio/20220824093109.308791-1-anuj20.g@xxxxxxxxxxx/T/#m17c6dcf1a3989a74865ceee0b87f470716aa5711 Use shift instead of expensive integer divisions (Jens) Put expensive nvme_uring_cmd initialization part in setup rather than having it in fast path (Jens) Create separate init_io_pt and reap_events_uring_pt functions for initializing i/o and reaping completions for passthru path(Jens) Put nsid and lba_shift a part of struct file (Jens) Add check for polled i/o for passthru case during failure (Kanchan) Check (bs % lbs) instead of (bs < lbs) (Kanchan) Fix index calculation for cqe during passthru i/o Anuj Gupta (2): t/io_uring: prep for including engines/nvme.h in t/io_uring t/io_uring: add support for async-passthru t/io_uring.c | 256 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 239 insertions(+), 17 deletions(-) -- 2.25.1