[PATCH] windows: fix pread/pwrite
Vincent Fu <[email protected]>
| Newsgroups | org.kernel.vger.fio |
|---|---|
| Message-ID | <[email protected]> |
The pread and pwrite functions for Windows posix emulation never actually seek to the requested offset. Fix this so that the psync ioengine works correctly on Windows. Signed-off-by: Vincent Fu <[email protected]> --- os/windows/posix.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/os/windows/posix.c b/os/windows/posix.c index e3abf383..3e48c3ff 100644 --- a/os/windows/posix.c +++ b/os/windows/posix.c @@ -830,18 +830,24 @@ ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset) { int64_t pos = _telli64(fildes); - ssize_t len = _write(fildes, buf, nbyte); + ssize_t len; + _lseeki64(fildes, offset, SEEK_SET); + len = _write(fildes, buf, nbyte); _lseeki64(fildes, pos, SEEK_SET); + return len; } ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset) { int64_t pos = _telli64(fildes); - ssize_t len = read(fildes, buf, nbyte); + ssize_t len; + _lseeki64(fildes, offset, SEEK_SET); + len = read(fildes, buf, nbyte); _lseeki64(fildes, pos, SEEK_SET); + return len; } -- 2.47.2