On 2/10/23 2:54 PM, Jens Axboe wrote: > On 2/10/23 8:32 AM, Ming Lei wrote: >> Hello, >> >> Add two OPs which buffer is retrieved via kernel splice for supporting >> fuse/ublk zero copy. >> >> The 1st patch enhances direct pipe & splice for moving pages in kernel, >> so that the two added OPs won't be misused, and avoid potential security >> hole. >> >> The 2nd patch allows splice_direct_to_actor() caller to ignore signal >> if the actor won't block and can be done in bound time. >> >> The 3rd patch add the two OPs. >> >> The 4th patch implements ublk's ->splice_read() for supporting >> zero copy. >> >> ublksrv(userspace): >> >> https://github.com/ming1/ubdsrv/commits/io_uring_splice_buf >> >> So far, only loop/null target implements zero copy in above branch: >> >> ublk add -t loop -f $file -z >> ublk add -t none -z >> >> Basic FS/IO function is verified, mount/kernel building & fio >> works fine, and big chunk IO(BS: 64k/512k) performance gets improved >> obviously. > > Do you have any performance numbers? Also curious on liburing regression > tests, would be nice to see as it helps with review. > > Caveat - haven't looked into this in detail just yet. Also see the recent splice/whatever discussion, might be something that's relevant here, particularly if we can avoid splice: https://lore.kernel.org/io-uring/0cfd9f02-dea7-90e2-e932-c8129b6013c7@xxxxxxxxx/ It's long... -- Jens Axboe