Fix compile warning on platforms with posix_fallocate
[fio.git] / smalloc.c
index ac5754d5f496119a342180eeae58bb4a229e4cf0..42008ebfdb6e44732c469b596b7be65786031231 100644 (file)
--- a/smalloc.c
+++ b/smalloc.c
 #include <unistd.h>
 #include <sys/types.h>
 #include <limits.h>
+#include <fcntl.h>
 
 #include "mutex.h"
 #include "arch/arch.h"
+#include "os/os.h"
 
 #define SMALLOC_REDZONE                /* define to detect memory corruption */
 
@@ -20,7 +22,7 @@
 #define SMALLOC_BPI    (sizeof(unsigned int) * 8)
 #define SMALLOC_BPL    (SMALLOC_BPB * SMALLOC_BPI)
 
-#define INITIAL_SIZE   1024*1024       /* new pool size */
+#define INITIAL_SIZE   8192*1024       /* new pool size */
 #define MAX_POOLS      128             /* maximum number of pools to setup */
 
 #define SMALLOC_PRE_RED                0xdeadbeefU
@@ -196,10 +198,22 @@ static int add_pool(struct pool *pool, unsigned int alloc_size)
        bitmap_blocks = alloc_size / SMALLOC_BPL;
        alloc_size += bitmap_blocks * sizeof(unsigned int);
        pool->mmap_size = alloc_size;
-       
+
        pool->nr_blocks = bitmap_blocks;
        pool->free_blocks = bitmap_blocks * SMALLOC_BPB;
 
+#ifdef FIO_HAVE_FALLOCATE
+       {
+               int ret;
+
+               ret = posix_fallocate(fd, 0, alloc_size);
+               if (ret > 0) {
+                       fprintf(stderr, "posix_fallocate pool file failed: %s\n", strerror(ret));
+                       goto out_unlink;
+               }
+       }
+#endif
+
        if (ftruncate(fd, alloc_size) < 0)
                goto out_unlink;