{
struct fio_file *f = io_u->file;
- if (io_u->ddir == DDIR_SYNC)
+ if (ddir_sync(io_u->ddir))
return 0;
if (lseek(f->fd, io_u->offset, SEEK_SET) == -1) {
{
struct syncio_data *sd = td->io_ops->data;
- if (io_u->ddir == DDIR_SYNC)
+ if (ddir_sync(io_u->ddir))
return 0;
if (io_u->offset == sd->last_offset && io_u->file == sd->last_file &&
int ret = fsync(io_u->file->fd);
return fio_io_end(td, io_u, ret);
- }
+ } else if (io_u->ddir == DDIR_DATASYNC) {
+ int ret = fdatasync(io_u->file->fd);
+ return fio_io_end(td, io_u, ret);
+ }
+
sd->queued = 0;
sd->queued_bytes = 0;
fio_vsyncio_set_iov(sd, io_u, 0);
.queue = fio_syncio_queue,
.open_file = generic_open_file,
.close_file = generic_close_file,
+ .get_file_size = generic_get_file_size,
.flags = FIO_SYNCIO,
};
.queue = fio_psyncio_queue,
.open_file = generic_open_file,
.close_file = generic_close_file,
+ .get_file_size = generic_get_file_size,
.flags = FIO_SYNCIO,
};
.getevents = fio_vsyncio_getevents,
.open_file = generic_open_file,
.close_file = generic_close_file,
+ .get_file_size = generic_get_file_size,
.flags = FIO_SYNCIO,
};