The first patch do the job, and triggers after __any__ CQEs, including ones from other timeouts. And it obviously fails to pass the tests. The second patch makes it to count only non-timeout CQEs, and passes the tests. Feel free to squash them. Fixes Hrvoje's issue. Also, there is one more bug to be fixed. It's related to bulk completion, and manifests itself with both implementations. Pavel Begunkov (2): io_uring: trigger timeout after any sqe->off CQEs io_uring: don't trigger timeout with another t-out fs/io_uring.c | 107 ++++++++++++++++---------------------------------- 1 file changed, 33 insertions(+), 74 deletions(-) -- 2.24.0