[SCM] CTDB repository - branch 1.13 updated - ctdb-1.42-2-g176f6aa

Ronnie Sahlberg sahlberg at samba.org
Thu May 10 02:09:22 MDT 2012


The branch, 1.13 has been updated
       via  176f6aae0f5ec276ecc35f4bbe633d37af6bc035 (commit)
      from  b550f4644ea81b7010d401e46cf803b13f16e3c1 (commit)

http://gitweb.samba.org/?p=ctdb.git;a=shortlog;h=1.13


- Log -----------------------------------------------------------------
commit 176f6aae0f5ec276ecc35f4bbe633d37af6bc035
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu May 10 17:40:22 2012 +1000

    We dont need to serialize the "probe which address this node is" if we have given an explicit --node-ip on the commandline

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

Summary of changes:
 tcp/tcp_connect.c |   47 +++++++++++++++++++++++++++--------------------
 1 files changed, 27 insertions(+), 20 deletions(-)


Changeset truncated at 500 lines:

diff --git a/tcp/tcp_connect.c b/tcp/tcp_connect.c
index 0e1318f..2814201 100644
--- a/tcp/tcp_connect.c
+++ b/tcp/tcp_connect.c
@@ -281,26 +281,29 @@ static int ctdb_tcp_listen_automatic(struct ctdb_context *ctdb)
 	int sock_size;
 	struct tevent_fd *fde;
 
-	/* in order to ensure that we don't get two nodes with the
-	   same adddress, we must make the bind() and listen() calls
-	   atomic. The SO_REUSEADDR setsockopt only prevents double
-	   binds if the first socket is in LISTEN state  */
-	lock_fd = open(lock_path, O_RDWR|O_CREAT, 0666);
-	if (lock_fd == -1) {
-		DEBUG(DEBUG_CRIT,("Unable to open %s\n", lock_path));
-		return -1;
-	}
+	/* We only need to serialize this if we dont yet know the node ip */
+	if (!ctdb->node_ip) {
+		/* in order to ensure that we don't get two nodes with the
+		   same adddress, we must make the bind() and listen() calls
+		   atomic. The SO_REUSEADDR setsockopt only prevents double
+		   binds if the first socket is in LISTEN state  */
+		lock_fd = open(lock_path, O_RDWR|O_CREAT, 0666);
+		if (lock_fd == -1) {
+			DEBUG(DEBUG_CRIT,("Unable to open %s\n", lock_path));
+			return -1;
+		}
 
-	lock.l_type = F_WRLCK;
-	lock.l_whence = SEEK_SET;
-	lock.l_start = 0;
-	lock.l_len = 1;
-	lock.l_pid = 0;
+		lock.l_type = F_WRLCK;
+		lock.l_whence = SEEK_SET;
+		lock.l_start = 0;
+		lock.l_len = 1;
+		lock.l_pid = 0;
 
-	if (fcntl(lock_fd, F_SETLKW, &lock) != 0) {
-		DEBUG(DEBUG_CRIT,("Unable to lock %s\n", lock_path));
-		close(lock_fd);
-		return -1;
+		if (fcntl(lock_fd, F_SETLKW, &lock) != 0) {
+			DEBUG(DEBUG_CRIT,("Unable to lock %s\n", lock_path));
+			close(lock_fd);
+			return -1;
+		}
 	}
 
 	for (i=0; i < ctdb->num_nodes; i++) {
@@ -399,11 +402,15 @@ static int ctdb_tcp_listen_automatic(struct ctdb_context *ctdb)
 			   ctdb_listen_event, ctdb);
 	tevent_fd_set_auto_close(fde);
 
-	close(lock_fd);
+	if (!ctdb->node_ip) {
+		close(lock_fd);
+	}
 	return 0;
 	
 failed:
-	close(lock_fd);
+	if (!ctdb->node_ip) {
+		close(lock_fd);
+	}
 	close(ctcp->listen_fd);
 	ctcp->listen_fd = -1;
 	return -1;


-- 
CTDB repository


More information about the samba-cvs mailing list