memory: wire up mmap huge page support
authorJens Axboe <axboe@kernel.dk>
Tue, 20 Nov 2012 12:39:59 +0000 (13:39 +0100)
committerJens Axboe <axboe@kernel.dk>
Tue, 20 Nov 2012 12:39:59 +0000 (13:39 +0100)
Signed-off-by: Jens Axboe <axboe@kernel.dk>
memory.c
os/os.h

index 82a79bd7175b9a74ca0846a669d767e06d50b84d..b4ee4752487129be62d98a126d305c62fb1c0b0d 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -121,6 +121,13 @@ static int alloc_mem_mmap(struct thread_data *td, size_t total_mem)
 
        td->mmapfd = 1;
 
+       if (td->o.mem_type == MEM_MMAPHUGE) {
+               unsigned long mask = td->o.hugepage_size - 1;
+
+               flags |= MAP_HUGETLB;
+               total_mem = (total_mem + mask) & ~mask;
+       }
+
        if (td->mmapfile) {
                td->mmapfd = open(td->mmapfile, O_RDWR|O_CREAT, 0644);
 
diff --git a/os/os.h b/os/os.h
index c6da0c3d9f0825efe6f078f59aa6566c6bc27258..f783e9220bc2ea35805265ec884898e355321485 100644 (file)
--- a/os/os.h
+++ b/os/os.h
@@ -95,6 +95,7 @@ typedef unsigned long os_cpu_mask_t;
 
 #ifndef FIO_HAVE_HUGETLB
 #define SHM_HUGETLB                    0
+#define MAP_HUGETLB                    0
 #ifndef FIO_HUGE_PAGE
 #define FIO_HUGE_PAGE                  0
 #endif