On 3/27/23 7:16 PM, Ming Lei wrote: > Hi Dan, > > On Mon, Mar 27, 2023 at 05:36:33PM -0700, Dan Williams wrote: >> Ming Lei wrote: >>> Hello Jens, >>> >>> Add IORING_OP_FUSED_CMD, it is one special URING_CMD, which has to >>> be SQE128. The 1st SQE(master) is one 64byte URING_CMD, and the 2nd >>> 64byte SQE(slave) is another normal 64byte OP. For any OP which needs >>> to support slave OP, io_issue_defs[op].fused_slave needs to be set as 1, >>> and its ->issue() can retrieve/import buffer from master request's >>> fused_cmd_kbuf. The slave OP is actually submitted from kernel, part of >>> this idea is from Xiaoguang's ublk ebpf patchset, but this patchset >>> submits slave OP just like normal OP issued from userspace, that said, >>> SQE order is kept, and batching handling is done too. >> >> Hi Ming, >> >> io_uring and ublk are starting to be more on my radar these days. I >> wanted to take a look at this series, but could not get past the >> distracting "master"/"slave" terminology in this lead-in paragraph let >> alone start looking at patches. >> >> Frankly, the description sounds more like "head"/"tail", or even >> "fuse0"/"fuse1" because, for example, who is to say you might not have > > The term "master/slave" is from patches. > > The master command not only provides buffer for slave request, but also requires > slave request for serving master command, and master command is always completed > after all slave request are done. > > That is why it is named as master/slave. Actually Jens raised the similar concern > and I hate the name too, but it is always hard to figure out perfect name, or > any other name for reflecting the relation? (head/tail, fuse0/1 can't > do that, IMO) Indeed. What about primary/secondary? And it'd be quite possible to have multiple secondaries too. -- Jens Axboe