- Subject: Recent changes
- From: Jens Axboe <jaxboe@xxxxxxxxxxxx>
- Date: Thu, 30 Jun 2011 06:00:02 +0200 (CEST)
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
[Home]
[Linux SCSI]
[Linux USB Devel]
[Video for Linux]
[Linux Audio Users]
[Photo]
[Yosemite News]
[Yosemite Photos]
[Video Projectors]
[Free Online Dating]
[Linux Kernel]
[Linux SCSI]
[XFree86]