X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Fsync.c;h=94dd71049f0cb1cf85f355ba210754150b1eec64;hp=c7ddd4c52956125bd408e4c6f2a0d86f95908041;hb=cec6b55da1c282b5b91ad346c7804171fccf151e;hpb=f8fe35e8c9e88dd681ea151251d75f6116a958b4 diff --git a/engines/sync.c b/engines/sync.c index c7ddd4c5..94dd7104 100644 --- a/engines/sync.c +++ b/engines/sync.c @@ -60,19 +60,20 @@ static int fio_syncio_queue(struct thread_data *td, struct io_u *io_u) { struct syncio_data *sd = td->io_ops->data; struct fio_file *f = io_u->file; - unsigned int ret; + int ret; if (io_u->ddir == DDIR_READ) - ret = read(f->fd, io_u->buf, io_u->buflen); + 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->buf, io_u->buflen); + ret = write(f->fd, io_u->xfer_buf, io_u->xfer_buflen); else ret = fsync(f->fd); - if (ret != io_u->buflen) { + if (ret != (int) io_u->xfer_buflen) { if (ret > 0) { - io_u->resid = io_u->buflen - ret; - io_u->error = EIO; + io_u->resid = io_u->xfer_buflen - ret; + io_u->error = 0; + return ret; } else io_u->error = errno; }