On 4/2/23 7:11?PM, Ming Lei wrote: > On Thu, Mar 30, 2023 at 07:36:13PM +0800, Ming Lei wrote: >> Hello Jens and Guys, >> >> Add generic fused command, which can include one primary command and multiple >> secondary requests. This command provides one safe way to share resource between >> primary command and secondary requests, and primary command is always >> completed after all secondary requests are done, and resource lifetime >> is bound with primary command. >> >> With this way, it is easy to support zero copy for ublk/fuse device, and >> there could be more potential use cases, such as offloading complicated logic >> into userspace, or decouple kernel subsystems. >> >> Follows ublksrv code, which implements zero copy for loop, nbd and >> qcow2 targets with fused command: >> >> https://github.com/ming1/ubdsrv/tree/fused-cmd-zc-for-v6 >> >> All three(loop, nbd and qcow2) ublk targets have supported zero copy by passing: >> >> ublk add -t [loop|nbd|qcow2] -z .... >> >> Also add liburing test case for covering fused command based on miniublk >> of blktest. >> >> https://github.com/ming1/liburing/tree/fused_cmd_miniublk_for_v6 >> >> Performance improvement is obvious on memory bandwidth related workloads, >> such as, 1~2X improvement on 64K/512K BS IO test on loop with ramfs backing file. >> ublk-null shows 5X IOPS improvement on big BS test when the copy is avoided. >> >> Please review and consider for v6.4. >> >> V6: >> - re-design fused command, and make it more generic, moving sharing buffer >> as one plugin of fused command, so in future we can implement more plugins >> - document potential other use cases of fused command >> - drop support for builtin secondary sqe in SQE128, so all secondary >> requests has standalone SQE >> - make fused command as one feature >> - cleanup & improve naming > > Hi Jens, > > Can you apply ublk cleanup patches 7~11 on for-6.4? For others, we may > delay to 6.5, and I am looking at other approach too. Done - and yes, we're probably looking at 6.5 for the rest. But that's fine, I'd rather end up with the right interface than try and rush one. -- Jens Axboe