X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=ioengines.c;h=bb46c293e3aed69dffd681095381fc1cd4a39344;hp=9b1ad60692e0e7b76bfd3296e9bab64bd566dcd6;hb=87dc1ab1b4df7b977f60e3d43533a896e2ee665b;hpb=dfd7bc2c24d3a4281982eaf4f83aa1aeb09424de diff --git a/ioengines.c b/ioengines.c index 9b1ad606..bb46c293 100644 --- a/ioengines.c +++ b/ioengines.c @@ -113,8 +113,40 @@ int td_io_prep(struct thread_data *td, struct io_u *io_u) int td_io_sync(struct thread_data *td, struct fio_file *f) { - if (td->io_ops->sync) - return td->io_ops->sync(td, f); + struct io_u *io_u = __get_io_u(td); + struct io_completion_data icd; + int ret; + + if (!io_u) + return 1; + + io_u->ddir = DDIR_SYNC; + io_u->file = f; + + if (td_io_prep(td, io_u)) { + put_io_u(td, io_u); + return 1; + } + + ret = td_io_queue(td, io_u); + if (ret) { + put_io_u(td, io_u); + td_verror(td, ret); + return 1; + } + + ret = td_io_getevents(td, 1, td->cur_depth, NULL); + if (ret < 0) { + td_verror(td, -ret); + return 1; + } + + icd.nr = ret; + ios_completed(td, &icd); + if (icd.error) { + td_verror(td, icd.error); + return 1; + } return 0; }