From 0074cda3791d29e1a0290bf29c008ce77b73d785 Mon Sep 17 00:00:00 2001 From: Kaushik BV Date: Fri, 15 Jul 2011 01:20:16 +0000 Subject: protocol/client: changes in volume_options to assist Signed-off-by: Kaushik BV Signed-off-by: Anand Avati BUG: 2041 (volume set help option) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2041 --- xlators/protocol/client/src/client.c | 49 +++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c index 4f7ee9cc12f..0231bec63ee 100644 --- a/xlators/protocol/client/src/client.c +++ b/xlators/protocol/client/src/client.c @@ -1671,21 +1671,33 @@ notify (xlator_t *this, int32_t event, void *data, ...) int build_client_config (xlator_t *this, clnt_conf_t *conf) { - int ret = 0; + int ret = 0; + char *def_val = NULL; if (!conf) return -1; + if (xlator_get_volopt_info (&this->volume_options, "frame-timeout", + &def_val, NULL)) { + gf_log (this->name, GF_LOG_ERROR, "Default value of " + "frame-timeout not found"); + ret = -1; + goto out; + } else { + if (gf_string2int32 (def_val, &conf->rpc_conf.rpc_timeout)) { + gf_log (this->name, GF_LOG_ERROR, "Default value of " + "frame-timeout corrupt"); + ret = -1; + goto out; + } + } + ret = dict_get_int32 (this->options, "frame-timeout", &conf->rpc_conf.rpc_timeout); if (ret >= 0) { gf_log (this->name, GF_LOG_DEBUG, "setting frame-timeout to %d", conf->rpc_conf.rpc_timeout); - } else { - gf_log (this->name, GF_LOG_DEBUG, - "defaulting frame-timeout to 30mins"); - conf->rpc_conf.rpc_timeout = 1800; } ret = dict_get_int32 (this->options, "remote-port", @@ -1698,15 +1710,27 @@ build_client_config (xlator_t *this, clnt_conf_t *conf) "defaulting remote-port to 'auto'"); } + + if (xlator_get_volopt_info (&this->volume_options, "ping-timeout", + &def_val, NULL)) { + gf_log (this->name, GF_LOG_ERROR, "Default value of " + "ping-timeout not found"); + ret = -1; + goto out; + } else { + if (gf_string2int32 (def_val, &conf->opt.ping_timeout)) { + gf_log (this->name, GF_LOG_ERROR, "Default value of " + "ping-timeout corrupt"); + ret = -1; + goto out; + } + } + ret = dict_get_int32 (this->options, "ping-timeout", &conf->opt.ping_timeout); if (ret >= 0) { gf_log (this->name, GF_LOG_DEBUG, "setting ping-timeout to %d", conf->opt.ping_timeout); - } else { - gf_log (this->name, GF_LOG_DEBUG, - "defaulting ping-timeout to 42"); - conf->opt.ping_timeout = GF_UNIVERSAL_ANSWER; } ret = dict_get_str (this->options, "remote-subvolume", @@ -2242,11 +2266,18 @@ struct volume_options options[] = { .type = GF_OPTION_TYPE_TIME, .min = 0, .max = 86400, + .default_value = "1800", + .description = "Time frame after which the (file) operation would be " + "declared as dead, if the server does not respond for " + "a particular (file) operation." }, { .key = {"ping-timeout"}, .type = GF_OPTION_TYPE_TIME, .min = 1, .max = 1013, + .default_value = "42", + .description = "Time duration for which the client waits to " + "check if the server is responsive." }, { .key = {"client-bind-insecure"}, .type = GF_OPTION_TYPE_BOOL -- cgit