diff options
author | Jens Axboe <axboe@kernel.dk> | 2013-02-06 13:52:12 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2013-02-06 13:52:12 +0100 |
commit | e254d00ba9dfcdf26e6a8fedd2339c16f5a616f7 (patch) | |
tree | a8f8312c8e4498230cba561f90ecb36ace454219 /os/windows | |
parent | eef02441621aa969f01a1a331e0215dd587d25af (diff) | |
download | fio-e254d00ba9dfcdf26e6a8fedd2339c16f5a616f7.tar.gz fio-e254d00ba9dfcdf26e6a8fedd2339c16f5a616f7.tar.bz2 |
Get rid of fallocate on Windows
Fallocate is only useful if it is a fast operation, helping the
file system allocate and setup meta data for the given size.
So don't punt to zero filling the entire thing.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'os/windows')
-rwxr-xr-x | os/windows/posix.c | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/os/windows/posix.c b/os/windows/posix.c index 05fa5a97..de679111 100755 --- a/os/windows/posix.c +++ b/os/windows/posix.c @@ -408,53 +408,6 @@ char *basename(char *path) return name; } -int posix_fallocate(int fd, off_t offset, off_t len) -{ - const int BUFFER_SIZE = 256 * 1024; - int rc = 0; - char *buf; - unsigned int write_len; - unsigned int bytes_written; - off_t bytes_remaining = len; - - if (len == 0 || offset < 0) - return EINVAL; - - buf = malloc(BUFFER_SIZE); - - if (buf == NULL) - return ENOMEM; - - memset(buf, 0, BUFFER_SIZE); - - int64_t prev_pos = _telli64(fd); - - if (_lseeki64(fd, offset, SEEK_SET) == -1) - return errno; - - while (bytes_remaining > 0) { - if (bytes_remaining < BUFFER_SIZE) - write_len = (unsigned int)bytes_remaining; - else - write_len = BUFFER_SIZE; - - bytes_written = _write(fd, buf, write_len); - if (bytes_written == -1) { - rc = errno; - break; - } - - /* Don't allow Windows to cache the write: flush it to disk */ - _commit(fd); - - bytes_remaining -= bytes_written; - } - - free(buf); - _lseeki64(fd, prev_pos, SEEK_SET); - return rc; -} - int ftruncate(int fildes, off_t length) { BOOL bSuccess; |