X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=smalloc.c;h=42008ebfdb6e44732c469b596b7be65786031231;hp=3dd1b4960dd9f15186399432800412fa1c45255d;hb=8489dae4360f2b00d89a6e9603c6167314b1974d;hpb=5e012980ff5f8396a3e3ebc432e1dd32cebedaa1 diff --git a/smalloc.c b/smalloc.c index 3dd1b496..42008ebf 100644 --- a/smalloc.c +++ b/smalloc.c @@ -10,9 +10,11 @@ #include #include #include +#include #include "mutex.h" #include "arch/arch.h" +#include "os/os.h" #define SMALLOC_REDZONE /* define to detect memory corruption */ @@ -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;