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:/home/test/gost/anuj/github/fio# taskset -c 0 t/io_uring -b512 -d128 -c32 -s32 -p0 -F1 -B0 -O0 -n1 -u1 /dev/ng0n1 submitter=0, tid=11289, 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.88M, BW=917MiB/s, IOS/call=32/31 IOPS=1.88M, BW=916MiB/s, IOS/call=32/32 IOPS=1.88M, BW=915MiB/s, IOS/call=32/32 IOPS=1.88M, BW=915MiB/s, IOS/call=32/32 IOPS=1.87M, BW=914MiB/s, IOS/call=32/32 IOPS=1.87M, BW=913MiB/s, IOS/call=32/32 ^CExiting on signal Maximum IOPS=1.88M Regular io_uring on nvme-block device: root@test:/home/test/gost/anuj/github/fio# taskset -c 0 t/io_uring -b512 -d128 -c32 -s32 -p0 -F1 -B0 -n1 /dev/nvme0n1 submitter=0, tid=11292, 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.48M, BW=724MiB/s, IOS/call=32/31 IOPS=1.48M, BW=722MiB/s, IOS/call=32/32 IOPS=1.48M, BW=721MiB/s, IOS/call=32/32 IOPS=1.48M, BW=721MiB/s, IOS/call=32/32 ^CExiting on signal Maximum IOPS=1.48M 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 | 164 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 147 insertions(+), 17 deletions(-) -- 2.25.1