[PATCH] Implement file syncing as data direction
[fio.git] / ioengines.c
index 9b1ad60692e0e7b76bfd3296e9bab64bd566dcd6..bb46c293e3aed69dffd681095381fc1cd4a39344 100644 (file)
@@ -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;
 }