diff --git a/tpool/aio_liburing.cc b/tpool/aio_liburing.cc index bdc3601ae35..430c01c91a0 100644 --- a/tpool/aio_liburing.cc +++ b/tpool/aio_liburing.cc @@ -162,6 +162,13 @@ private: io_uring_cqe_seen(&aio->uring_, cqe); + if (res == -EAGAIN) { + // If we need to resubmit the IO operation, but the ring is full, + // then just go the same path as for any other error codes. + if (!aio->submit_io(iocb)) + continue; + } + iocb->m_internal_task.m_func= iocb->m_callback; iocb->m_internal_task.m_arg= iocb; iocb->m_internal_task.m_group= iocb->m_group;