X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Fsync.c;h=46cb864d770b7819015f354c325c8410fbb878b5;hb=f85ac25a7d5c9d5ba4d5c73363a6a2a461a9b013;hp=505381d4ca942b932d7171393a2dc8f51c558726;hpb=1d2af02a16fc3c3561c994be4de887b926b2b774;p=fio.git diff --git a/engines/sync.c b/engines/sync.c index 505381d4..46cb864d 100644 --- a/engines/sync.c +++ b/engines/sync.c @@ -30,8 +30,6 @@ static int fio_syncio_prep(struct thread_data *td, struct io_u *io_u) if (io_u->ddir == DDIR_SYNC) return 0; - if (io_u->offset == f->last_completed_pos) - return 0; if (lseek(f->fd, io_u->offset, SEEK_SET) == -1) { td_verror(td, errno, "lseek"); @@ -157,6 +155,11 @@ static int fio_vsyncio_queue(struct thread_data *td, struct io_u *io_u) */ if (sd->queued) return FIO_Q_BUSY; + if (io_u->ddir == DDIR_SYNC) { + int ret = fsync(io_u->file->fd); + + return fio_io_end(td, io_u, ret); + } sd->queued = 0; sd->queued_bytes = 0;