blob: 58d4c2c95d7779c2fda88ab1510e6ac6df3fd718 [file] [log] [blame]
From 34e3152b64368d4a3672084ebae565d55f320f5d Mon Sep 17 00:00:00 2001
From: Lucas Meneghel Rodrigues <lmr@redhat.com>
Date: Tue, 18 May 2010 10:40:15 -0300
Subject: [PATCH 1/2] Minor fixes to PAGE_SIZE handling
Signed-off-by: Suzuki <suzuki@in.ibm.com>
---
fsx-linux.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/fsx-linux.c b/fsx-linux.c
index a1642d2..33eb770 100644
--- a/fsx-linux.c
+++ b/fsx-linux.c
@@ -10,6 +10,8 @@
*
* Small changes to work under Linux -- davej@suse.de
*
+ * Minor fixes to PAGE_SIZE handling -- Suzuki <suzuki@in.ibm.com>.
+ *
*/
#undef _XOPEN_SOURCE
@@ -74,7 +76,7 @@ int logcount = 0; /* total ops */
#define OP_SKIPPED 7
#ifndef PAGE_SIZE
-#define PAGE_SIZE 4096
+#define PAGE_SIZE pagesize
#endif
#define PAGE_MASK (PAGE_SIZE - 1)
@@ -129,6 +131,7 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset);
FILE * fsxlogf = NULL;
int badoff = -1;
int closeopen = 0;
+int pagesize = 0;
static void *round_up(void *ptr, unsigned long align, unsigned long offset)
{
@@ -493,7 +496,7 @@ domapread(unsigned offset, unsigned size)
offset, offset + size - 1, size);
pg_offset = offset & PAGE_MASK;
- map_size = pg_offset + size;
+ map_size = (pg_offset + size + PAGE_MASK) & ~PAGE_MASK;
#ifdef linux
if ((p = (char *)mmap(0, map_size, PROT_READ, MAP_SHARED, fd,
@@ -638,7 +641,7 @@ domapwrite(unsigned offset, unsigned size)
}
}
pg_offset = offset & PAGE_MASK;
- map_size = pg_offset + size;
+ map_size = (pg_offset + size + PAGE_MASK) & ~PAGE_MASK;
if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE,
MAP_FILE | MAP_SHARED, fd,
@@ -1106,6 +1109,7 @@ main(int argc, char **argv)
if (argc != 1)
usage();
fname = argv[0];
+ pagesize = getpagesize();
signal(SIGHUP, cleanup);
signal(SIGINT, cleanup);
--
1.7.0.1