From: Jens Axboe Date: Wed, 6 Feb 2013 12:52:12 +0000 (+0100) Subject: Get rid of fallocate on Windows X-Git-Tag: fio-2.0.14~29 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=e254d00ba9dfcdf26e6a8fedd2339c16f5a616f7 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 --- diff --git a/configure b/configure index 258c8050..d7ca77c8 100755 --- a/configure +++ b/configure @@ -200,7 +200,6 @@ CYGWIN*) fi output_sym "CONFIG_FADVISE" output_sym "CONFIG_SOCKLEN_T" - output_sym "CONFIG_POSIX_FALLOCATE" output_sym "CONFIG_FADVISE" output_sym "CONFIG_SFAA" output_sym "CONFIG_RUSAGE_THREAD" 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;