MDEV-25760: Resubmit IO job on -EAGAIN from io_uring

The server still may abort if there is no enough free space in the
ring buffer to resubmit the IO job, but the behavior is equal to
the failure of os_aio() -> submit_io().
This commit is contained in:
Marko Mäkelä 2021-06-14 08:57:04 +03:00
parent 74a0a9877b
commit 28e362eaca

View File

@ -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;