Fix fallocate erroneously returning ENOSYS on Linux systems
authorWade Cline <wcline@us.ibm.com>
Wed, 1 Aug 2012 06:45:48 +0000 (08:45 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 1 Aug 2012 06:45:48 +0000 (08:45 +0200)
Currently, the helpers.c file provides a function defintion for Linux
fallocate that sets errno to ENOSYS and returns failure; this is useful
for a non-Linux OS. However, this definition will override the Linux
implementation of fallocate when 'fallocate=keep' is set. Adding a
preprocessor macro to check if Linux fallocate is defined fixes this
issue.

Signed-off-by: Wade Cline <wcline@us.ibm.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
helpers.c

index 95625672b3417f0146e2f0c492a93ac4d54c54c0..5be45ccf5f3954b3c87494132d7f0cdf94825814 100644 (file)
--- a/helpers.c
+++ b/helpers.c
@@ -9,11 +9,13 @@
 #include "arch/arch.h"
 #include "os/os.h"
 
 #include "arch/arch.h"
 #include "os/os.h"
 
+#ifndef FIO_HAVE_LINUX_FALLOCATE 
 int _weak fallocate(int fd, int mode, off_t offset, off_t len)
 {
        errno = ENOSYS;
        return -1;
 }
 int _weak fallocate(int fd, int mode, off_t offset, off_t len)
 {
        errno = ENOSYS;
        return -1;
 }
+#endif
 
 #ifndef __NR_fallocate
 int _weak posix_fallocate(int fd, off_t offset, off_t len)
 
 #ifndef __NR_fallocate
 int _weak posix_fallocate(int fd, off_t offset, off_t len)