X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Flibpmem.c;h=3038784512474440e42bb8ea8bf31aeba3da523f;hb=9109883a1c20c2cbadd2d2cb8ca80d03835eaa66;hp=db57e4915081bee21a93ce9e0f768d91a2f9ad6b;hpb=597a6533fc364529d0a3c112e0beb86f66b3b28d;p=fio.git diff --git a/engines/libpmem.c b/engines/libpmem.c index db57e491..30387845 100644 --- a/engines/libpmem.c +++ b/engines/libpmem.c @@ -81,10 +81,9 @@ struct fio_libpmem_data { #define PROCMAXLEN 2048 /* maximum expected line length in /proc files */ #define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) -static int Mmap_no_random; +static bool Mmap_no_random; static void *Mmap_hint; static unsigned long long Mmap_align; -static unsigned long long Pagesize = 0; /* * util_map_hint_align -- choose the desired mapping alignment @@ -94,20 +93,9 @@ static unsigned long long Pagesize = 0; */ static inline size_t util_map_hint_align(size_t len, size_t req_align) { - size_t align = 0; + size_t align = Mmap_align; dprint(FD_IO, "DEBUG util_map_hint_align\n" ); -#ifndef WIN32 - Mmap_align = Pagesize; -#else - if (Mmap_align == 0) { - SYSTEM_INFO si; - GetSystemInfo(&si); - Mmap_align = si.dwAllocationGranularity; - } -#endif - - align = Mmap_align; if (req_align) align = req_align; @@ -159,11 +147,8 @@ static char *util_map_hint_unused(void *minaddr, size_t len, size_t align) dprint(FD_IO, "DEBUG util_map_hint_unused\n"); assert(align > 0); - /* XXX - replace sysconf() with util_get_sys_xxx() */ - Pagesize = (unsigned long) sysconf(_SC_PAGESIZE); - if (raddr == NULL) - raddr += Pagesize; + raddr += page_size; raddr = (char *)roundup((uintptr_t)raddr, align); @@ -289,7 +274,7 @@ static char *util_map_hint(size_t len, size_t req_align) dprint(FD_IO, "Invalid PMEM_MMAP_HINT\n"); } else { Mmap_hint = (void *)val; - Mmap_no_random = 1; + Mmap_no_random = true; dprint(FD_IO, "PMEM_MMAP_HINT set to %p\n", Mmap_hint); } } @@ -445,7 +430,7 @@ static int fio_libpmem_prep(struct thread_data *td, struct io_u *io_u) io_u->buflen, fdd->libpmem_sz); if (io_u->offset >= fdd->libpmem_off && - (io_u->offset + io_u->buflen < + (io_u->offset + io_u->buflen <= fdd->libpmem_off + fdd->libpmem_sz)) goto done; @@ -586,6 +571,17 @@ static struct ioengine_ops ioengine = { static void fio_init fio_libpmem_register(void) { +#ifndef WIN32 + Mmap_align = page_size; +#else + if (Mmap_align == 0) { + SYSTEM_INFO si; + + GetSystemInfo(&si); + Mmap_align = si.dwAllocationGranularity; + } +#endif + register_ioengine(&ioengine); }