summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2019-09-12 10:51:09 -0700
committerAndres Freund <andres@anarazel.de>2019-09-12 11:01:16 -0700
commitf6abd73197dd534a4944eabfdd11f5104fcf9409 (patch)
treed90fb07be995ef4520b05d6a5297dec72c9d31c6
parent27f436d9f72a9d2d3da3adfdf712757152eab29e (diff)
downloadfio-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.c4
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;