Please enable JavaScript.
Coggle requires JavaScript to display documents.
ublk fused command re-work - Coggle Diagram
ublk fused command re-work
ideas
extend io_uring link_model
N SQEs depends on single SQE
SQE provides buffer
allow to provide device buffer
device buffer protocol
of referencing buffer
reuse interface of provide buffer
SQE group
generic fused command to sqe group
hard points
error handling
the whole group has to handle together
all or nothing
control cached_sq_head
make sure every SQE is allocated with one req
no request for member?
refer to link's failure handling
submit members after group is completed
timeout
IO_DRAIN
key points
lead's CQE has to be posted after all member CQEs are posted
two completions
__io_submit_flush_completions
io_req_complete_post
test cases
SQE group link
SQE group normal case
kevin's group
all members are equal
issued in parallel
lead covers both drain & link flag, which is shared by whole group
lead has to be completed as the last one
test
group link
group drain
problems
polling support
how to poll sqe group
io_timeout
if link can be re-used?
can timeout req be group leader of member?
any request which depends on link can't be group member
io_wq vs. context queueing
completion vs request free
group leader has to be completed as the last one in group
cqe is posted as the last one
handle it in the flush completions
async
CQE has to be posted in io_uring_complete_post()
CQE needs to be in-order
members can be completed from both uring context or async