summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2012-09-28 15:56:38 +0530
committerPranith Kumar K <pkarampu@redhat.com>2012-09-28 22:49:03 +0530
commit3b291d14ec7049e324a75ed48c5ed467da8ed9d1 (patch)
treed0f2a27372433c24dd90ac5db802033b123c1bfa
parent13cfed388a19dd70984197fb14330d0277ba91e7 (diff)
mgmt/glusterd: volume set help should not be affected by quorum
Change-Id: I47e96be696891f802e9e52dd8e177573e666fd68 BUG: 861289 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-op-sm.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
index a46b470f0a1..b21ecf72fde 100644
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
@@ -2253,6 +2253,31 @@ out:
}
gf_boolean_t
+glusterd_is_get_op (xlator_t *this, glusterd_op_t op, dict_t *dict)
+{
+ char *key = NULL;
+ char *volname = NULL;
+ int ret = 0;
+
+ if (op == GD_OP_STATUS_VOLUME)
+ return _gf_true;
+
+ if ((op == GD_OP_SET_VOLUME)) {
+ //check for set volume help
+ ret = dict_get_str (dict, "volname", &volname);
+ if (volname &&
+ ((strcmp (volname, "help") == 0) ||
+ (strcmp (volname, "help-xml") == 0))) {
+ ret = dict_get_str (dict, "key1", &key);
+ if (ret < 0)
+ return _gf_true;
+ }
+ }
+
+ return _gf_false;
+}
+
+gf_boolean_t
glusterd_is_op_quorum_validation_required (xlator_t *this, glusterd_op_t op,
dict_t *dict)
{
@@ -2261,7 +2286,7 @@ glusterd_is_op_quorum_validation_required (xlator_t *this, glusterd_op_t op,
char *key_fixed = NULL;
int ret = -1;
- if (op == GD_OP_STATUS_VOLUME) {
+ if (glusterd_is_get_op (this, op, dict)) {
required = _gf_false;
goto out;
}
@@ -2271,6 +2296,8 @@ glusterd_is_op_quorum_validation_required (xlator_t *this, glusterd_op_t op,
ret = dict_get_str (dict, "key1", &key);
else if (op == GD_OP_RESET_VOLUME)
ret = dict_get_str (dict, "key", &key);
+ if (ret)
+ goto out;
ret = glusterd_check_option_exists (key, &key_fixed);
if (ret <= 0)
goto out;