[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Tue Nov 29 23:00:03 UTC 2016


The branch, master has been updated
       via  275d9fc tdb: Fix mutexes on FreeBSD
       via  5ce95ab tdb: Only mmap the mutex area if not already mmap'ed
       via  a2843cf tdb: NULL out tdb->mutexes in tdb_mutex_munmap
      from  bdc049d ctdb-common: Drop CTDB's copy of sys_read() and sys_write()

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 275d9fc7d943048c5e580e656b6ad85b8fc6cc14
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 21 21:00:01 2016 +0100

    tdb: Fix mutexes on FreeBSD
    
    susv4 on mmap has the following snippet:
    
    > The state of synchronization objects such as mutexes, semaphores,
    > barriers, and conditional variables placed in shared memory mapped
    > with MAP_SHARED becomes undefined when the last region in any process
    > containing the synchronization object is unmapped.
    
    This means we can't keep the mutex mmap area unmapped at any point
    in time.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12455
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Nov 29 23:59:52 CET 2016 on sn-devel-144

commit 5ce95abf37d5646dd5a6ed9acc018f0ab5d1023c
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 21 20:58:08 2016 +0100

    tdb: Only mmap the mutex area if not already mmap'ed
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12455
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit a2843cfd4dca32ccb9e97f20a9119f131db3b9d1
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 21 20:56:55 2016 +0100

    tdb: NULL out tdb->mutexes in tdb_mutex_munmap
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12455
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 lib/tdb/common/mutex.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/tdb/common/mutex.c b/lib/tdb/common/mutex.c
index 280dec1..cac3916 100644
--- a/lib/tdb/common/mutex.c
+++ b/lib/tdb/common/mutex.c
@@ -603,12 +603,13 @@ int tdb_mutex_init(struct tdb_context *tdb)
 fail:
 	pthread_mutexattr_destroy(&ma);
 fail_munmap:
-	tdb_mutex_munmap(tdb);
 
 	if (ret == 0) {
 		return 0;
 	}
 
+	tdb_mutex_munmap(tdb);
+
 	errno = ret;
 	return -1;
 }
@@ -623,6 +624,10 @@ int tdb_mutex_mmap(struct tdb_context *tdb)
 		return 0;
 	}
 
+	if (tdb->mutexes != NULL) {
+		return 0;
+	}
+
 	ptr = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FILE,
 		   tdb->fd, 0);
 	if (ptr == MAP_FAILED) {
@@ -636,13 +641,20 @@ int tdb_mutex_mmap(struct tdb_context *tdb)
 int tdb_mutex_munmap(struct tdb_context *tdb)
 {
 	size_t len;
+	int ret;
 
 	len = tdb_mutex_size(tdb);
 	if (len == 0) {
 		return 0;
 	}
 
-	return munmap(tdb->mutexes, len);
+	ret = munmap(tdb->mutexes, len);
+	if (ret == -1) {
+		return -1;
+	}
+	tdb->mutexes = NULL;
+
+	return 0;
 }
 
 static bool tdb_mutex_locking_cached;


-- 
Samba Shared Repository



More information about the samba-cvs mailing list