On 3/22/24 12:50 PM, Kanchan Joshi wrote: > This patchset is aimed at getting the feedback on a new io_uring > interface that userspace can use to exchange meta buffer along with > read/write. > > Two new opcodes for that: IORING_OP_READ_META and IORING_OP_WRITE_META. > The leftover space in the SQE is used to send meta buffer pointer > and its length. Patch #2 for this. > > The interface is supported for block direct IO. Patch #4 for this. > Other two are prep patches. > > It has been tried not to touch the hot read/write path, as much as > possible. Performance for non-meta IO is same after the patches [2]. > There is some code in the cold path (worker-based async) > though. This patchset should look cleaner if you rebase it on top of the current for-6.10/io_uring branch, as it gets rid of the async nastiness. Since that'll need doing anyway, could you repost a v2 where it's rebased on top of that? Also in terms of the cover letter, would be good with a bit more of a description of what this enables. It's a bit scant on detail on what exactly this gives you. > taskset -c 2,5 t/io_uring -b512 -d128 -c32 -s32 -p1 -F1 -B1 -n2 -r4 /dev/nvme0n1 /dev/nvme1n1 > submitter=1, tid=2453, file=/dev/nvme1n1, node=-1 > submitter=0, tid=2452, file=/dev/nvme0n1, node=-1 > polled=1, fixedbufs=1, register_files=1, buffered=0, QD=128 > Engine=io_uring, sq_ring=128, cq_ring=128 > IOPS=10.02M, BW=4.89GiB/s, IOS/call=31/31 > IOPS=10.04M, BW=4.90GiB/s, IOS/call=31/31 > > With this: > taskset -c 2,5 t/io_uring -b512 -d128 -c32 -s32 -p1 -F1 -B1 -n2 -r4 /dev/nvme0n1 /dev/nvme1n1 > submitter=1, tid=2453, file=/dev/nvme1n1, node=-1 > submitter=0, tid=2452, file=/dev/nvme0n1, node=-1 > polled=1, fixedbufs=1, register_files=1, buffered=0, QD=128 > Engine=io_uring, sq_ring=128, cq_ring=128 > IOPS=10.02M, BW=4.89GiB/s, IOS/call=31/31 > IOPS=10.04M, BW=4.90GiB/s, IOS/call=31/31 Not that I don't believe you, but that looks like you pasted the same stuff in there twice? It's the exact same perf and pids. -- Jens Axboe