diff options
Diffstat (limited to 'xlators/protocol/client/src/client.c')
-rw-r--r-- | xlators/protocol/client/src/client.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c index e181292f433..7ab10b085b4 100644 --- a/xlators/protocol/client/src/client.c +++ b/xlators/protocol/client/src/client.c @@ -2310,6 +2310,37 @@ notify (xlator_t *this, int32_t event, void *data, ...) } int +client_check_remote_host (xlator_t *this, dict_t *options) +{ + char *remote_host = NULL; + int ret = -1; + + ret = dict_get_str (options, "remote-host", &remote_host); + if (ret < 0) { + gf_log (this->name, GF_LOG_INFO, "Remote host is not set. " + "Assuming the volfile server as remote host."); + + if (!this->ctx->cmd_args.volfile_server) { + gf_log (this->name, GF_LOG_ERROR, + "No remote host to connect."); + goto out; + } + + ret = dict_set_str (options, "remote-host", + this->ctx->cmd_args.volfile_server); + if (ret == -1) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to set the remote host"); + goto out; + } + } + + ret = 0; +out: + return ret; +} + +int build_client_config (xlator_t *this, clnt_conf_t *conf) { int ret = -1; @@ -2337,6 +2368,10 @@ build_client_config (xlator_t *this, clnt_conf_t *conf) GF_OPTION_INIT ("send-gids", conf->send_gids, bool, out); + ret = client_check_remote_host (this, this->options); + if (ret) + goto out; + ret = 0; out: return ret; @@ -2493,6 +2528,10 @@ reconfigure (xlator_t *this, dict_t *options) GF_OPTION_RECONF ("ping-timeout", conf->opt.ping_timeout, options, int32, out); + ret = client_check_remote_host (this, options); + if (ret) + goto out; + subvol_ret = dict_get_str (this->options, "remote-host", &old_remote_host); |