From f6abd73197dd534a4944eabfdd11f5104fcf9409 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Thu, 12 Sep 2019 10:51:09 -0700 Subject: [PATCH] engines/io_uring: Handle EINTR. Several paths in io_uring_enter can trigger EINTR, but it was not handled, leading to fio failing with spurious error messages. An easy way to trigger EINTR is to just strace a running fio using the io_uring engine and detach again. Signed-off-by: Andres Freund --- engines/io_uring.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/io_uring.c b/engines/io_uring.c index 10cfe9f2..a1b1324b 100644 --- a/engines/io_uring.c +++ b/engines/io_uring.c @@ -259,7 +259,7 @@ static int fio_ioring_getevents(struct thread_data *td, unsigned int min, r = io_uring_enter(ld, 0, actual_min, IORING_ENTER_GETEVENTS); if (r < 0) { - if (errno == EAGAIN) + if (errno == EAGAIN || errno == EINTR) continue; td_verror(td, errno, "io_uring_enter"); break; @@ -370,7 +370,7 @@ static int fio_ioring_commit(struct thread_data *td) io_u_mark_submit(td, ret); continue; } else { - if (errno == EAGAIN) { + if (errno == EAGAIN || errno == EINTR) { ret = fio_ioring_cqring_reap(td, 0, ld->queued); if (ret) continue; -- 2.25.1