X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=ioengines.c;h=47f606a75409c9a2679443ad02ba7f818e6f6ed4;hb=9a0ac6c7b69355ea095f06c6b0a08115c946dd61;hp=433da604ae4af03daf9fc8b8d5a81b2097ed0362;hpb=c74cb68a1c13077222471e77f4715e0521cb4ed0;p=fio.git diff --git a/ioengines.c b/ioengines.c index 433da604..47f606a7 100644 --- a/ioengines.c +++ b/ioengines.c @@ -18,6 +18,7 @@ #include "fio.h" #include "diskutil.h" +#include "zbd.h" static FLIST_HEAD(engine_list); @@ -287,6 +288,8 @@ 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) + pthread_mutex_unlock(&overlap_check); assert(fio_file_open(io_u->file)); @@ -319,6 +322,10 @@ 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; + } unlock_file(td, io_u->file); @@ -350,6 +357,13 @@ enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u) "invalid block size. Try setting direct=0.\n"); } + if (zbd_unaligned_write(io_u->error) && + td->io_issues[io_u->ddir & 1] == 1 && + td->o.zone_mode != ZONE_MODE_ZBD) { + log_info("fio: first I/O failed. If %s is a zoned block device, consider --zonemode=zbd\n", + io_u->file->file_name); + } + if (!td->io_ops->commit) { io_u_mark_submit(td, 1); io_u_mark_complete(td, 1);