summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAtin Mukherjee <amukherj@redhat.com>2016-04-26 12:46:18 +0530
committerKaushal M <kaushal@redhat.com>2016-04-26 05:26:54 -0700
commitf93761c547c39fad20f9aa96d4baf2641500b9a0 (patch)
treebcb0fb01834465088627fc7b6d1518da373b07af
parentedeb67a5344389f88a6912460fb0cf2e76a32df3 (diff)
glusterd: fix validation of lower op-version check in volume set
Commit 2d87a98 introduced a validation to fail lowering down the cluster.op-version. Commit 2eb8758 actually changed the variable value from cluster's op-version to volume's op-version which resulted the logic go for a toss. Change-Id: I70df32b75c3a3fe47dc840c4a655059e5b124bca BUG: 1315186 Signed-off-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-on: http://review.gluster.org/14069 Smoke: Gluster Build System <jenkins@build.gluster.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Kaushal M <kaushal@redhat.com>
-rw-r--r--tests/bugs/glusterd/bug-1315186-reject-lowering-down-op-version.t22
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-op-sm.c4
2 files changed, 24 insertions, 2 deletions
diff --git a/tests/bugs/glusterd/bug-1315186-reject-lowering-down-op-version.t b/tests/bugs/glusterd/bug-1315186-reject-lowering-down-op-version.t
new file mode 100644
index 00000000000..4bd6eaac59f
--- /dev/null
+++ b/tests/bugs/glusterd/bug-1315186-reject-lowering-down-op-version.t
@@ -0,0 +1,22 @@
+#! /bin/bash
+
+. $(dirname $0)/../../include.rc
+
+# The test validates that lowering down the op-version should fail
+
+cleanup
+
+TEST glusterd
+TEST pidof glusterd
+
+#volume create is just to ensure glusterd.info file is created
+TEST $CLI volume create $V0 $H0:$B0/b1
+
+GDWD=$($CLI system getwd)
+OP_VERS_ORIG=$(grep 'operating-version' ${GDWD}/glusterd.info | cut -d '=' -f 2)
+OP_VERS_NEW=`expr $OP_VERS_ORIG-1`
+
+TEST ! $CLI volume set all $V0 cluster.op-version $OP_VERS_NEW
+
+cleanup;
+
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
index 951d06b2ff7..339195b00e6 100644
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
@@ -1141,7 +1141,7 @@ glusterd_op_stage_set_volume (dict_t *dict, char **op_errstr)
"%s", errstr);
goto out;
}
- if (local_key_op_version > local_new_op_version) {
+ if (local_key_op_version > priv->op_version) {
local_new_op_version = local_key_op_version;
} else {
ret = -1;
@@ -1150,7 +1150,7 @@ glusterd_op_stage_set_volume (dict_t *dict, char **op_errstr)
" not be equal or lower than current"
" cluster op-version (%d).",
local_key_op_version,
- local_new_op_version);
+ priv->op_version);
gf_msg (this->name, GF_LOG_ERROR, 0,
GD_MSG_VERSION_UNSUPPORTED,
"%s", errstr);