summaryrefslogtreecommitdiff
path: root/os
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2013-02-06 13:52:12 +0100
committerJens Axboe <axboe@kernel.dk>2013-02-06 13:52:12 +0100
commite254d00ba9dfcdf26e6a8fedd2339c16f5a616f7 (patch)
treea8f8312c8e4498230cba561f90ecb36ace454219 /os
parenteef02441621aa969f01a1a331e0215dd587d25af (diff)
downloadfio-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')
-rwxr-xr-xos/windows/posix.c47
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;