[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Wed Mar 25 07:59:02 MDT 2015


The branch, master has been updated
       via  8c4d4f9 Revert "lib: tdb: Use sigaction when testing for robust mutexes."
       via  293e2fc lib/util: fix the default code path for debug_set_settings()
      from  5963307 util_tdb: mark tdb_pack() and friends as deprecated

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


- Log -----------------------------------------------------------------
commit 8c4d4f9e627256bb8c93615b600acfb438cdef55
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Mar 25 11:39:54 2015 +0100

    Revert "lib: tdb: Use sigaction when testing for robust mutexes."
    
    This fails on Linux platforms with robust mutex support with the
    following error:
    
    tdb(/home/asn/workspace/projects/samba/git/st/nt4_dc/lockdir/gencache_notrans.tdb):
        tdb_mutex_open_ok[/home/asn/workspace/projects/samba/git/st/nt4_dc/lockdir/gencache_notrans.tdb]:
        Can use mutexes only with MUTEX_LOCKING or NOLOCK
    
    We also see winbind is not able to start with this error message trying
    to open the serverid.tdb.
    
    This reverts commit d1914367289b58f26544ee6e116490d662d9c41c.
    
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Wed Mar 25 14:58:38 CET 2015 on sn-devel-104

commit 293e2fcacb298f3f3342e87987bf6ebd4ddad9c8
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Mar 25 10:56:57 2015 +0000

    lib/util: fix the default code path for debug_set_settings()
    
    logging_param is typically "" instead of NULL!
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

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

Summary of changes:
 lib/tdb/common/mutex.c | 32 ++++----------------------------
 lib/util/debug.c       |  8 ++++++--
 2 files changed, 10 insertions(+), 30 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/tdb/common/mutex.c b/lib/tdb/common/mutex.c
index d45cce8..12f89d3 100644
--- a/lib/tdb/common/mutex.c
+++ b/lib/tdb/common/mutex.c
@@ -713,27 +713,6 @@ cleanup_ma:
 static void (*tdb_robust_mutext_old_handler)(int) = SIG_ERR;
 static pid_t tdb_robust_mutex_pid = -1;
 
-static void (*tdb_robust_mutex_setup_sigchild(void (*handler)(int)))(int)
-{
-#ifdef HAVE_SIGACTION
-	struct sigaction act;
-	struct sigaction oldact;
-
-	memset(&act, '\0', sizeof(act));
-
-	act.sa_handler = handler;
-#ifdef SA_RESTART
-	act.sa_flags = SA_RESTART;
-#endif
-	sigemptyset(&act.sa_mask);
-	sigaddset(&act.sa_mask, SIGCHLD);
-	sigaction(SIGCHLD, &act, &oldact);
-	return oldact.sa_handler;
-#else /* !HAVE_SIGACTION */
-	return NULL;
-#endif
-}
-
 static void tdb_robust_mutex_handler(int sig)
 {
 	if (tdb_robust_mutex_pid != -1) {
@@ -824,11 +803,8 @@ _PUBLIC_ bool tdb_runtime_check_for_robust_mutexes(void)
 		goto cleanup_ma;
 	}
 
-	tdb_robust_mutext_old_handler = tdb_robust_mutex_setup_sigchild(
-						tdb_robust_mutex_handler);
-	if (tdb_robust_mutext_old_handler == NULL) {
-		goto cleanup_ma;
-	}
+	tdb_robust_mutext_old_handler = signal(SIGCHLD,
+					       tdb_robust_mutex_handler);
 
 	tdb_robust_mutex_pid = fork();
 	if (tdb_robust_mutex_pid == 0) {
@@ -893,7 +869,7 @@ _PUBLIC_ bool tdb_runtime_check_for_robust_mutexes(void)
 			goto cleanup_child;
 		}
 	}
-	tdb_robust_mutex_setup_sigchild(tdb_robust_mutext_old_handler);
+	signal(SIGCHLD, tdb_robust_mutext_old_handler);
 
 	ret = pthread_mutex_trylock(m);
 	if (ret != EOWNERDEAD) {
@@ -939,7 +915,7 @@ cleanup_child:
 		}
 	}
 cleanup_sig_child:
-	tdb_robust_mutex_setup_sigchild(tdb_robust_mutext_old_handler);
+	signal(SIGCHLD, tdb_robust_mutext_old_handler);
 cleanup_m:
 	pthread_mutex_destroy(m);
 cleanup_ma:
diff --git a/lib/util/debug.c b/lib/util/debug.c
index 6b16cd7..91b02b4 100644
--- a/lib/util/debug.c
+++ b/lib/util/debug.c
@@ -763,7 +763,8 @@ void debug_set_settings(struct debug_settings *settings,
 			const char *logging_param,
 			int syslog_level, bool syslog_only)
 {
-	char fake_param[20];
+	char fake_param[256];
+	size_t len = 0;
 
 	/*
 	 * This forces in some smb.conf derived values into the debug
@@ -776,7 +777,10 @@ void debug_set_settings(struct debug_settings *settings,
 	 * If 'logging' is not set, create backend settings from
 	 * deprecated 'syslog' and 'syslog only' paramters
 	 */
-	if (!logging_param) {
+	if (logging_param != NULL) {
+		len = strlen(logging_param);
+	}
+	if (len == 0) {
 		if (syslog_only) {
 			snprintf(fake_param, sizeof(fake_param),
 				 "syslog:%d", syslog_level - 1);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list