mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
We dont need to serialize the "probe which address this node is" if we have given an explicit --node-ip on the commandline
(This used to be ctdb commit e3dc5bd3f1ef1f0ed08f57a5b5bafcac936e9ed0)
This commit is contained in:
parent
a57eba2bb4
commit
dfdec4a07c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user