Recent changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux