summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
authorAtin Mukherjee <amukherj@redhat.com>2016-01-21 14:48:34 +0530
committerJeff Darcy <jdarcy@redhat.com>2016-03-08 05:58:22 -0800
commit05d3d95afa62ef3271f0fe3c7272e1e19638c448 (patch)
treebf0407081d3eaba177e1eaee1d1129a565819955 /xlators
parent4318354aac650c18b4047142e43f3d4cff4310a7 (diff)
glusterd: volume get should pick options from priv->opts too
As of now volume get was not looking for all the global options maintained in option dictionary in glusterd_conf_t. This patch includes the same. Change-Id: Ib05259a2dcacc4a712cae4217fe4a6553b61da56 BUG: 1300596 Signed-off-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-on: http://review.gluster.org/13272 Smoke: Gluster Build System <jenkins@build.gluster.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Gaurav Kumar Garg <ggarg@redhat.com> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-handler.c38
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c32
2 files changed, 52 insertions, 18 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c
index c5d486d00dd..9007843be4a 100644
--- a/xlators/mgmt/glusterd/src/glusterd-handler.c
+++ b/xlators/mgmt/glusterd/src/glusterd-handler.c
@@ -4778,17 +4778,43 @@ glusterd_get_volume_opts (rpcsvc_request_t *req, dict_t *dict)
goto out;
}
} else {
- ret = glusterd_get_default_val_for_volopt
+ sprintf (dict_key, "key%d", count);
+ ret = dict_set_str(dict, dict_key, key);
+ if (ret) {
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ GD_MSG_DICT_SET_FAILED, "Failed"
+ " to set %s in dictionary",
+ key);
+ goto out;
+ }
+ sprintf (dict_key, "value%d", count);
+ ret = dict_get_str (priv->opts, key, &value);
+ if (!ret) {
+ ret = dict_set_str(dict, dict_key,
+ value);
+ if (ret) {
+ gf_msg (this->name,
+ GF_LOG_ERROR, 0,
+ GD_MSG_DICT_SET_FAILED,
+ "Failed to set %s in "
+ " dictionary", key);
+ goto out;
+ }
+ } else {
+ ret = glusterd_get_default_val_for_volopt
(dict,
_gf_false,
key, orig_key,
volinfo->dict,
&rsp.op_errstr);
- if (ret && !rsp.op_errstr) {
- snprintf (err_str, sizeof(err_str),
- "Failed to fetch the value of"
- " %s, check log file for more"
- " details", key);
+ if (ret && !rsp.op_errstr) {
+ snprintf (err_str,
+ sizeof(err_str),
+ "Failed to fetch the "
+ "value of %s, check "
+ "log file for more"
+ " details", key);
+ }
}
}
}
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index f5206cd3e63..27425042a01 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -10657,10 +10657,14 @@ glusterd_get_default_val_for_volopt (dict_t *ctx, gf_boolean_t all_opts,
char *def_val = NULL;
char dict_key[50] = {0,};
gf_boolean_t key_found = _gf_false;
+ glusterd_conf_t *priv = NULL;
this = THIS;
GF_ASSERT (this);
+ priv = this->private;
+ GF_VALIDATE_OR_GOTO (this->name, priv, out);
+
GF_VALIDATE_OR_GOTO (this->name, vol_dict, out);
/* Check whether key is passed for a single option */
@@ -10675,19 +10679,23 @@ glusterd_get_default_val_for_volopt (dict_t *ctx, gf_boolean_t all_opts,
if (!all_opts && strcmp (vme->key, input_key))
continue;
key_found = _gf_true;
- /* First look for the key in the vol_dict, if its not
- * present then look for translator default value */
- ret = dict_get_str (vol_dict, vme->key, &def_val);
+ /* First look for the key in the priv->opts for global option
+ * and then into vol_dict, if its not present then look for
+ * translator default value */
+ ret = dict_get_str (priv->opts, vme->key, &def_val);
if (!def_val) {
- if (vme->value) {
- def_val = vme->value;
- } else {
- ret = glusterd_get_value_for_vme_entry
- (vme, &def_val);
- if (!all_opts && ret)
- goto out;
- else if (ret == -2)
- continue;
+ ret = dict_get_str (vol_dict, vme->key, &def_val);
+ if (!def_val) {
+ if (vme->value) {
+ def_val = vme->value;
+ } else {
+ ret = glusterd_get_value_for_vme_entry
+ (vme, &def_val);
+ if (!all_opts && ret)
+ goto out;
+ else if (ret == -2)
+ continue;
+ }
}
}
count++;