On 2/2/21 1:34 PM, Pavel Begunkov wrote: > On 02/02/2021 17:41, Pavel Begunkov wrote: >> On 02/02/2021 17:24, Jens Axboe wrote: >>> On 2/2/21 10:10 AM, Victor Stewart wrote: >>>>> Can you send the updated test app? >>>> >>>> https://gist.github.com/victorstewart/98814b65ed702c33480487c05b40eb56 >>>> >>>> same link i just updated the same gist >>> >>> And how are you running it? >> >> with SQPOLL with FIXED FLAG -> FAILURE: failed with error = ??? >> -> io_uring_wait_cqe_timeout() strangely returns -1, (-EPERM??) > > Ok, _io_uring_get_cqe() is just screwed twice > > TL;DR > we enter into it with submit=0, do an iteration, which decrements it, > then a second iteration passes submit=-1, which is returned back by > the kernel as a result and propagated back from liburing... Yep, that's what I came up with too. We really just need a clear way of knowing when to break out, and when to keep going. Eg if we've done a loop and don't end up calling the system call, then there's no point in continuing. -- Jens Axboe