summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);