The following changes since commit 5982a925647f5d376bd7c2aca27e49b4cfe4a2c1: patch from debian fio package to fix syntax errors in manpage. (2011-06-27 19:46:05 +0200) are available in the git repository at: git://git.kernel.dk/fio.git master Jens Axboe (1): Make smalloc use anonymous memory mmaps smalloc.c | 36 ++++++------------------------------ 1 files changed, 6 insertions(+), 30 deletions(-) --- Diff of recent changes: diff --git a/smalloc.c b/smalloc.c index fdf7d22..a925a65 100644 --- a/smalloc.c +++ b/smalloc.c @@ -38,7 +38,6 @@ struct pool { unsigned int free_blocks; /* free blocks */ unsigned int nr_blocks; /* total blocks */ unsigned int next_non_full; - int fd; /* memory backing fd */ unsigned int mmap_size; }; @@ -178,14 +177,9 @@ static int find_next_zero(int word, int start) static int add_pool(struct pool *pool, unsigned int alloc_size) { - int fd, bitmap_blocks; - char file[] = "/tmp/.fio_smalloc.XXXXXX"; + int bitmap_blocks; void *ptr; - fd = mkstemp(file); - if (fd < 0) - goto out_close; - #ifdef SMALLOC_REDZONE alloc_size += sizeof(unsigned int); #endif @@ -202,16 +196,10 @@ static int add_pool(struct pool *pool, unsigned int alloc_size) pool->nr_blocks = bitmap_blocks; pool->free_blocks = bitmap_blocks * SMALLOC_BPB; -#ifdef FIO_HAVE_FALLOCATE - posix_fallocate(fd, 0, alloc_size); -#endif - - if (ftruncate(fd, alloc_size) < 0) - goto out_unlink; - - ptr = mmap(NULL, alloc_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + ptr = mmap(NULL, alloc_size, PROT_READ|PROT_WRITE, + MAP_SHARED | OS_MAP_ANON, -1, 0); if (ptr == MAP_FAILED) - goto out_unlink; + goto out_fail; memset(ptr, 0, alloc_size); pool->map = ptr; @@ -219,25 +207,14 @@ static int add_pool(struct pool *pool, unsigned int alloc_size) pool->lock = fio_mutex_init(1); if (!pool->lock) - goto out_unlink; - - /* - * Unlink pool file now. It wont get deleted until the fd is closed, - * which happens both for cleanup or unexpected quit. This way we - * don't leave temp files around in case of a crash. - */ - unlink(file); - pool->fd = fd; + goto out_fail; nr_pools++; return 0; -out_unlink: +out_fail: fprintf(stderr, "smalloc: failed adding pool\n"); if (pool->map) munmap(pool->map, pool->mmap_size); - unlink(file); -out_close: - close(fd); return 1; } @@ -256,7 +233,6 @@ static void cleanup_pool(struct pool *pool) * This will also remove the temporary file we used as a backing * store, it was already unlinked */ - close(pool->fd); munmap(pool->map, pool->mmap_size); if (pool->lock) -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html