Make smalloc use anonymous memory mmaps

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
diff --git a/smalloc.c b/smalloc.c
index fdf7d22..a925a65 100644
--- a/smalloc.c
+++ b/smalloc.c
@@ -38,7 +38,6 @@
 	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 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 @@
 	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 @@
 
 	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 @@
 	 * 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)