X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=ioengines.c;h=7e5a50cc81ba328875b605a55f1fde8c16122cec;hp=47f606a75409c9a2679443ad02ba7f818e6f6ed4;hb=d9ed3e63e5280899e2e0bc7e55124c2a1acb30ca;hpb=d5dbacf662b1cc3fb09b5cd70b236ab98d1c0dbe diff --git a/ioengines.c b/ioengines.c index 47f606a7..7e5a50cc 100644 --- a/ioengines.c +++ b/ioengines.c @@ -131,7 +131,7 @@ static struct ioengine_ops *__load_ioengine(const char *name) /* * linux libaio has alias names, so convert to what we want */ - if (!strncmp(engine, "linuxaio", 8) || !strncmp(engine, "aio", 3)) { + if (!strncmp(engine, "linuxaio", 8)) { dprint(FD_IO, "converting ioengine name: %s -> libaio\n", name); strcpy(engine, "libaio"); } @@ -288,7 +288,14 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u) assert((io_u->flags & IO_U_F_FLIGHT) == 0); io_u_set(td, io_u, IO_U_F_FLIGHT); - if (td->o.serialize_overlap && td->o.io_submit_mode == IO_MODE_OFFLOAD) + + /* + * If overlap checking was enabled in offload mode we + * can release this lock that was acquired when we + * started the overlap check because the IO_U_F_FLIGHT + * flag is now set + */ + if (td_offload_overlap(td)) pthread_mutex_unlock(&overlap_check); assert(fio_file_open(io_u->file)); @@ -322,10 +329,7 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u) } ret = td->io_ops->queue(td, io_u); - if (ret != FIO_Q_BUSY && io_u->post_submit) { - io_u->post_submit(io_u, io_u->error == 0); - io_u->post_submit = NULL; - } + zbd_queue_io_u(io_u, ret); unlock_file(td, io_u->file); @@ -367,6 +371,7 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u) if (!td->io_ops->commit) { io_u_mark_submit(td, 1); io_u_mark_complete(td, 1); + zbd_put_io_u(io_u); } if (ret == FIO_Q_COMPLETED) {