[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