From 04691de379fa692b22fc9f0b58c0bd829ce7cc7a Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Wed, 3 Sep 2008 10:44:09 -0400 Subject: The msync manpage reports that msync *must* be called before munmap. Failure to do so may result in lost data. Fix an ifdef check, I really think we meant to check HAVE_MMAP here. (This used to be commit 74c8575b3f3b90ea21ae6aa7ccd95947838af956) --- source3/lib/tdb/common/io.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'source3/lib/tdb/common/io.c') diff --git a/source3/lib/tdb/common/io.c b/source3/lib/tdb/common/io.c index 172ab69d8c..4ec18de48e 100644 --- a/source3/lib/tdb/common/io.c +++ b/source3/lib/tdb/common/io.c @@ -189,7 +189,13 @@ int tdb_munmap(struct tdb_context *tdb) #ifdef HAVE_MMAP if (tdb->map_ptr) { - int ret = munmap(tdb->map_ptr, tdb->map_size); + int ret; + + ret = msync(tdb->map_ptr, tdb->map_size, MS_SYNC); + if (ret != 0) + return ret; + + ret = munmap(tdb->map_ptr, tdb->map_size); if (ret != 0) return ret; } -- cgit