Hi, For v4, see posting here: https://lore.kernel.org/io-uring/20210811193533.766613-1-axboe@xxxxxxxxx/ 3.5M+ IOPS per core: axboe@amd ~/g/fio (master)> sudo taskset -c 0 t/io_uring -b512 -d128 -c32 -s32 -p1 -F1 -B1 /dev/nvme3n1 i 8, argc 9 Added file /dev/nvme3n1 (submitter 0) sq_ring ptr = 0x0x7fdab1a8d000 sqes ptr = 0x0x7fdab1a8b000 cq_ring ptr = 0x0x7fdab1a89000 polled=1, fixedbufs=1, register_files=1, buffered=0 QD=128, sq_ring=128, cq_ring=256 submitter=1757 IOPS=3520608, IOS/call=32/31, inflight=47 (47) IOPS=3514432, IOS/call=32/32, inflight=32 (32) IOPS=3513440, IOS/call=32/31, inflight=128 (128) IOPS=3507616, IOS/call=32/32, inflight=32 (32) IOPS=3505984, IOS/call=32/32, inflight=32 (32) IOPS=3511328, IOS/call=32/31, inflight=64 (64) [snip] Changes can also be bound in my io_uring-bio-cache.5 branch, and sit on top of for-5.15/io_uring. block/bio.c | 164 +++++++++++++++++++++++++++++++++---- block/blk-core.c | 5 +- fs/block_dev.c | 6 +- fs/io_uring.c | 2 +- include/linux/bio.h | 13 +++ include/linux/blk_types.h | 1 + include/linux/cpuhotplug.h | 1 + include/linux/fs.h | 2 + 8 files changed, 175 insertions(+), 19 deletions(-) Changes since v4: - Kill __bio_init() helper - Kill __bio_put() helper - Cleanup bio_alloc_kiocb() - Expand commit messages - Various little tweaks - Add kerneldoc for bio_alloc_kiocb() - Fix attribution on last patch - Remove bio.h list manipulation leftovers - Move cpuhp_dead notifier to end of bio_set - Rebase on for-5.15/io_uring -- Jens Axboe