Merge branch 'master' of https://github.com/celestinechen/fio
authorJens Axboe <axboe@kernel.dk>
Fri, 19 Apr 2024 19:51:05 +0000 (13:51 -0600)
committerJens Axboe <axboe@kernel.dk>
Fri, 19 Apr 2024 19:51:05 +0000 (13:51 -0600)
* 'master' of https://github.com/celestinechen/fio:
  FIO with fsync option issues more DDIR_SYNC commands than expected

io_u.c
ioengines.c

diff --git a/io_u.c b/io_u.c
index 8389589363c0d06964edf503846f0a44dac4aa2a..a499ff076b188c5cf6530892a4c1c7e1ce73d43b 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -2113,7 +2113,6 @@ 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;
                        f->last_write = -1ULL;
@@ -2123,7 +2122,6 @@ static void io_completed(struct thread_data *td, struct io_u **io_u_ptr,
                return;
        }
 
-       td->last_was_sync = false;
        td->last_ddir = ddir;
 
        if (!io_u->error && ddir_rw(ddir)) {
index 87cc2286e0e8f577c1176db4c1d984110e6af62a..6b81dc772ad3284683eb1c668e24d899f758d0ec 100644 (file)
@@ -436,6 +436,8 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
                        io_u_mark_depth(td, 1);
                        td->ts.total_io_u[io_u->ddir]++;
                }
+
+               td->last_was_sync = ddir_sync(io_u->ddir);
        } else if (ret == FIO_Q_QUEUED) {
                td->io_u_queued++;
 
@@ -445,6 +447,8 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
 
                if (td->io_u_queued >= td->o.iodepth_batch)
                        td_io_commit(td);
+
+               td->last_was_sync = ddir_sync(io_u->ddir);
        }
 
        if (!td_ioengine_flagged(td, FIO_SYNCIO) &&