summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiels de Vos <ndevos@redhat.com>2014-10-21 09:04:23 +0200
committerVijay Bellur <vbellur@redhat.com>2014-10-21 05:30:14 -0700
commit8e598bb02ae431cc08e7bfe449fede21e0ed2f35 (patch)
tree576c0616386b34d5ecb88b39825eb0686ffb50b2
parent40a378460e51c0af9bedf33c6c767c4e757259e6 (diff)
glusterd: pass the bind-address to starting services
When the transport.socket.bind-address option is set to a hostname or ip-address, the services started by GlusterD fail to connect to the management daemon. GlusterD always forces the services to connect to the "localhost" hostname, even if it is not listening on that address. GlusterD should take the transport.socket.bind-address option into consideration, and pass that to the glusterfs-clients with the -s or --volfile commandline parameter. Note that this is not a change that removes all hard-coded dependencies on "localhost". This change merely makes it possible to start required services when the transport.socket.bind-address option is set. Cherry picked from commit 283fa797f4bf98130b42c36972305b8cb6e5aaaf: > Change-Id: I36a0ed6c69342e6327adc258fea023929055d7f2 > BUG: 1149863 > Signed-off-by: Niels de Vos <ndevos@redhat.com> > Reviewed-on: http://review.gluster.org/8908 > Tested-by: Gluster Build System <jenkins@build.gluster.com> > Reviewed-by: Jeff Darcy <jdarcy@redhat.com> > Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com> > Tested-by: Krishnan Parthasarathi <kparthas@redhat.com> Change-Id: I36a0ed6c69342e6327adc258fea023929055d7f2 BUG: 1151745 Signed-off-by: Niels de Vos <ndevos@redhat.com> Reviewed-on: http://review.gluster.org/8950 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index 0696725c717..e250da9700a 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -6057,7 +6057,8 @@ glusterd_nodesvc_start (char *server, gf_boolean_t wait)
char logfile[PATH_MAX] = {0,};
char volfile[PATH_MAX] = {0,};
char rundir[PATH_MAX] = {0,};
- char sockfpath[PATH_MAX] = {0,};
+ char sockfpath[PATH_MAX] = {0,};
+ char *volfileserver = NULL;
char volfileid[256] = {0};
char glusterd_uuid_option[1024] = {0};
char valgrind_logfile[PATH_MAX] = {0};
@@ -6092,6 +6093,11 @@ glusterd_nodesvc_start (char *server, gf_boolean_t wait)
server);
snprintf (volfileid, sizeof (volfileid), "gluster/%s", server);
+ if (dict_get_str (this->options, "transport.socket.bind-address",
+ &volfileserver) != 0) {
+ volfileserver = "localhost";
+ }
+
glusterd_nodesvc_set_socket_filepath (rundir, MY_UUID,
sockfpath, sizeof (sockfpath));
@@ -6113,7 +6119,7 @@ glusterd_nodesvc_start (char *server, gf_boolean_t wait)
}
runner_add_args (&runner, SBIN_DIR"/glusterfs",
- "-s", "localhost",
+ "-s", volfileserver,
"--volfile-id", volfileid,
"-p", pidfile,
"-l", logfile,
@@ -13272,6 +13278,7 @@ glusterd_snapd_start (glusterd_volinfo_t *volinfo, gf_boolean_t wait)
char rundir[PATH_MAX] = {0,};
char sockfpath[PATH_MAX] = {0,};
char volfileid[256] = {0};
+ char *volfileserver = NULL;
char valgrind_logfile[PATH_MAX] = {0};
int snapd_port = 0;
char *volname = volinfo->volname;
@@ -13314,6 +13321,11 @@ glusterd_snapd_start (glusterd_volinfo_t *volinfo, gf_boolean_t wait)
glusterd_set_snapd_socket_filepath (volinfo, sockfpath,
sizeof (sockfpath));
+ if (dict_get_str (this->options, "transport.socket.bind-address",
+ &volfileserver) != 0) {
+ volfileserver = "localhost";
+ }
+
runinit (&runner);
if (priv->valgrind) {
@@ -13329,7 +13341,7 @@ glusterd_snapd_start (glusterd_volinfo_t *volinfo, gf_boolean_t wait)
snprintf (snapd_id, sizeof (snapd_id), "snapd-%s", volname);
runner_add_args (&runner, SBIN_DIR"/glusterfsd",
- "-s", "localhost",
+ "-s", volfileserver,
"--volfile-id", volfileid,
"-p", pidfile,
"-l", logfile,
@@ -13624,4 +13636,4 @@ glusterd_have_peers ()
GF_ASSERT (conf);
return !list_empty (&conf->peers);
-} \ No newline at end of file
+}