Re: [PATCH v3] io_uring: maintain drain logic for multishot poll requests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/13/21 1:20 AM, Hao Xu wrote:
> Now that we have multishot poll requests, one SQE can emit multiple
> CQEs. given below example:
>     sqe0(multishot poll)-->sqe1-->sqe2(drain req)
> sqe2 is designed to issue after sqe0 and sqe1 completed, but since sqe0
> is a multishot poll request, sqe2 may be issued after sqe0's event
> triggered twice before sqe1 completed. This isn't what users leverage
> drain requests for.
> Here the solution is to wait for multishot poll requests fully
> completed.
> To achieve this, we should reconsider the req_need_defer equation, the
> original one is:
> 
>     all_sqes(excluding dropped ones) == all_cqes(including dropped ones)
> 
> This means we issue a drain request when all the previous submitted
> SQEs have generated their CQEs.
> Now we should consider multishot requests, we deduct all the multishot
> CQEs except the cancellation one, In this way a multishot poll request
> behave like a normal request, so:
>     all_sqes == all_cqes - multishot_cqes(except cancellations)
> 
> Here we introduce cq_extra for it.

Thanks, applied this and the test case.

-- 
Jens Axboe




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux