This explicitly sends MS_SYNC as the flag to msync() in
fsx.c, in domapwrite(). Without this flag, the memory
written to the mmap'ed region will not be flushed to disk;
in fact, on Linux, calling msync() with a '0' or MS_ASYNC
flag is a no-op.
Signed-off-by: Curt Wohlgemuth <[email protected]>
---
ltp/fsx.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/ltp/fsx.c b/ltp/fsx.c
index b36c201..2f1e3e8 100644
--- a/ltp/fsx.c
+++ b/ltp/fsx.c
@@ -779,7 +779,7 @@ domapwrite(unsigned offset, unsigned size)
report_failure(202);
}
memcpy(p + pg_offset, good_buf + offset, size);
- if (msync(p, map_size, 0) != 0) {
+ if (msync(p, map_size, MS_SYNC) != 0) {
prterr("domapwrite: msync");
report_failure(203);
}
--
1.7.7.3
On Tue, Feb 07, 2012 at 11:16:06AM -0800, Curt Wohlgemuth wrote:
> This explicitly sends MS_SYNC as the flag to msync() in
> fsx.c, in domapwrite(). Without this flag, the memory
> written to the mmap'ed region will not be flushed to disk;
> in fact, on Linux, calling msync() with a '0' or MS_ASYNC
> flag is a no-op.
Looks sensible to me - what exactly msync did has always been grossly
different for different operating systems, including changing meaning
on Linux a few times, so let's be explicit.
Reviewed-by: Christoph Hellwig <[email protected]>