+static int fio_psyncio_queue(struct thread_data *td, struct io_u *io_u)
+{
+ struct fio_file *f = io_u->file;
+ int ret;
+
+ fio_ro_check(td, io_u);
+
+ if (io_u->ddir == DDIR_READ)
+ ret = pread(f->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset);
+ else if (io_u->ddir == DDIR_WRITE)
+ ret = pwrite(f->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset);
+ else
+ ret = fsync(f->fd);
+
+ return fio_io_end(td, io_u, ret);
+}
+
+static int fio_syncio_queue(struct thread_data *td, struct io_u *io_u)
+{
+ struct fio_file *f = io_u->file;
+ int ret;
+
+ fio_ro_check(td, io_u);
+
+ if (io_u->ddir == DDIR_READ)
+ ret = read(f->fd, io_u->xfer_buf, io_u->xfer_buflen);
+ else if (io_u->ddir == DDIR_WRITE)
+ ret = write(f->fd, io_u->xfer_buf, io_u->xfer_buflen);
+ else
+ ret = fsync(f->fd);
+
+ return fio_io_end(td, io_u, ret);
+}
+
+static struct ioengine_ops ioengine_rw = {