io_ur: make sure that sync errors are noticed upfront
authorJens Axboe <axboe@kernel.dk>
Sat, 20 May 2023 01:30:38 +0000 (19:30 -0600)
committerJens Axboe <axboe@kernel.dk>
Sat, 20 May 2023 01:30:38 +0000 (19:30 -0600)
This could probably be cleaner in the error handling, but jump to
the normal error handling case for ddir_sync() as well.

Fixes: https://github.com/axboe/fio/issues/1577
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_u.c

diff --git a/io_u.c b/io_u.c
index 30265cfb4a2da5c19a1c60069d49e2d122a8a620..6f5fc94d9a3e87bf68e3a5cdd2149579ac855720 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -2027,6 +2027,8 @@ static void io_completed(struct thread_data *td, struct io_u **io_u_ptr,
        }
 
        if (ddir_sync(ddir)) {
+               if (io_u->error)
+                       goto error;
                td->last_was_sync = true;
                if (f) {
                        f->first_write = -1ULL;
@@ -2082,6 +2084,7 @@ static void io_completed(struct thread_data *td, struct io_u **io_u_ptr,
                                icd->error = ret;
                }
        } else if (io_u->error) {
+error:
                icd->error = io_u->error;
                io_u_log_error(td, io_u);
        }