diff options
author | Niels de Vos <ndevos@redhat.com> | 2014-10-06 22:51:22 +0200 |
---|---|---|
committer | Krishnan Parthasarathi <kparthas@redhat.com> | 2014-10-07 19:57:19 -0700 |
commit | 283fa797f4bf98130b42c36972305b8cb6e5aaaf (patch) | |
tree | 819551c3494103b0e33657232aaed7e362e34870 | |
parent | ddb31110db8e1b5995d392ced988f34d2f9145d2 (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.
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>
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index cae08ddf356..b0b7cfe8bca 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -6072,7 +6072,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}; @@ -6107,6 +6108,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)); @@ -6128,7 +6134,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, @@ -13287,6 +13293,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; @@ -13329,6 +13336,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) { @@ -13344,7 +13356,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, |