Running with an io_uring engine and using a USR1 signal to show
current status will end up terminating the job with:
fio: pid=91726, err=-4/file:ioengines.c:320, func=get_events, error=Unknown error -4
sfx: (groupid=0, jobs=1): err=-4 (file:ioengines.c:320, func=get_events, error=Unknown error -4): pid=91726: Wed Aug 24 11:59:51 2022
Ensure that the return value is set correctly based on the errno.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
struct io_uring_cqe *cqe;
struct io_u *io_u;
unsigned index;
+ static int eio;
index = (event + ld->cq_ring_off) & ld->cq_ring_mask;
cqe = &ld->cq_ring.cqes[index];
io_u = (struct io_u *) (uintptr_t) cqe->user_data;
+ if (eio++ == 5) {
+ printf("mark EIO\n");
+ cqe->res = -EIO;
+ }
+
if (cqe->res != io_u->xfer_buflen) {
if (cqe->res > io_u->xfer_buflen)
io_u->error = -cqe->res;
if (r < 0) {
if (errno == EAGAIN || errno == EINTR)
continue;
+ r = -errno;
td_verror(td, errno, "io_uring_enter");
break;
}
usleep(1);
continue;
}
+ ret = -errno;
td_verror(td, errno, "io_uring_enter submit");
break;
}