Recent changes (master)

Jens Axboe
2020-09-09T12:00:15Z

The following changes since commit be23e6be4fadb723f925824f88fbaedbd3502251:

Kill off old GUASI IO engine (2020-09-07 13:38:03 -0600)

are available in the Git repository at:

git://git.kernel.dk/fio.git master

for you to fetch changes up to ca8ff0968cec7ee47ca7fe5b40f592c2b332b062:

Merge branch 'zbd' of https://github.com/bvanassche/fio into master (2020-09-08 10:25:48 -0600)

----------------------------------------------------------------
Bart Van Assche (1):
zbd: Add a missing pthread_mutex_unlock() call

Jens Axboe (2):
engines/io_uring: allow setting of IOSQE_ASYNC
Merge branch 'zbd' of https://github.com/bvanassche/fio into master

engines/io_uring.c | 16 ++++++++++++++++
zbd.c | 1 +
2 files changed, 17 insertions(+)

---

Diff of recent changes:

diff --git a/engines/io_uring.c b/engines/io_uring.c
index ca5b90c9..e2b5e6ee 100644
--- a/engines/io_uring.c
+++ b/engines/io_uring.c
@@ -66,6 +66,7 @@ struct ioring_data {
unsigned iodepth;
bool ioprio_class_set;
bool ioprio_set;
+ int prepped;

struct ioring_mmap mmap[3];
};
@@ -82,6 +83,7 @@ struct ioring_options {
unsigned int nonvectored;
unsigned int uncached;
unsigned int nowait;
+ unsigned int force_async;
};

static const int ddir_to_op[2][2] = {
@@ -197,6 +199,15 @@ static struct fio_option options[] = {
.category = FIO_OPT_C_ENGINE,
.group = FIO_OPT_G_IOURING,
},
+ {
+ .name = "force_async",
+ .lname = "Force async",
+ .type = FIO_OPT_INT,
+ .off1 = offsetof(struct ioring_options, force_async),
+ .help = "Set IOSQE_ASYNC every N requests",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_IOURING,
+ },
{
.name = NULL,
},
@@ -277,6 +288,11 @@ static int fio_ioring_prep(struct thread_data *td, struct io_u *io_u)
}
}

+ if (o->force_async && ++ld->prepped == o->force_async) {
+ ld->prepped = 0;
+ sqe->flags |= IOSQE_ASYNC;
+ }
+
sqe->user_data = (unsigned long) io_u;
return 0;
}
diff --git a/zbd.c b/zbd.c
index e8ecbb6f..905c0c2b 100644
--- a/zbd.c
+++ b/zbd.c
@@ -1546,6 +1546,7 @@ enum io_u_action zbd_adjust_block(struct thread_data *td, struct io_u *io_u)
case DDIR_READ:
if (td->runstate == TD_VERIFYING && td_write(td)) {
zb = zbd_replay_write_order(td, io_u, zb);
+ pthread_mutex_unlock(&zb->mutex);
goto accept;
}
/*