diff options
author | Andres Freund <andres@anarazel.de> | 2019-09-12 10:51:09 -0700 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2019-09-12 11:01:16 -0700 |
commit | f6abd73197dd534a4944eabfdd11f5104fcf9409 (patch) | |
tree | d90fb07be995ef4520b05d6a5297dec72c9d31c6 | |
parent | 27f436d9f72a9d2d3da3adfdf712757152eab29e (diff) | |
download | fio-f6abd73197dd534a4944eabfdd11f5104fcf9409.tar.gz fio-f6abd73197dd534a4944eabfdd11f5104fcf9409.tar.bz2 |
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 <andres@anarazel.de>
-rw-r--r-- | engines/io_uring.c | 4 |
1 files 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; |