7f4c2a
From dc34ee3b1962e51b5793ccaba71a1cf24062f598 Mon Sep 17 00:00:00 2001
7f4c2a
From: Kaushal M <kmadappa@redhat.com>
7f4c2a
Date: Thu, 11 Jun 2015 18:21:17 +0530
7f4c2a
Subject: [PATCH 69/73] glusterd: fix op-versions for RHS backwards compatability
7f4c2a
7f4c2a
This change fixes the op-version of different features and checks to
7f4c2a
maintain backwards compatability with RHS-3.0 and before.
7f4c2a
7f4c2a
Change-Id: Ic8fb452d06b753b4e55496981069575e3b25d792
7f4c2a
BUG: 1230764
7f4c2a
Signed-off-by: Kaushal M <kmadappa@redhat.com>
7f4c2a
Reviewed-on: https://code.engineering.redhat.com/gerrit/50555
7f4c2a
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
7f4c2a
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
7f4c2a
---
7f4c2a
 libglusterfs/src/globals.h                         |   45 +++--
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-brick-ops.c     |    8 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-handler.c       |   12 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-op-sm.c         |   16 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-peer-utils.c    |    8 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-rebalance.c     |    4 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-replace-brick.c |    4 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-rpc-ops.c       |    6 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-sm.c            |    2 +-
7f4c2a
 .../mgmt/glusterd/src/glusterd-snapshot-utils.c    |   12 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-snapshot.c      |    4 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-store.c         |   25 ++--
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-syncop.c        |   11 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-utils.c         |    8 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-volume-ops.c    |   12 +-
7f4c2a
 xlators/mgmt/glusterd/src/glusterd-volume-set.c    |  186 ++++++++++----------
7f4c2a
 16 files changed, 187 insertions(+), 176 deletions(-)
7f4c2a
7f4c2a
diff --git a/libglusterfs/src/globals.h b/libglusterfs/src/globals.h
7f4c2a
index 3ef18ce..07185a8 100644
7f4c2a
--- a/libglusterfs/src/globals.h
7f4c2a
+++ b/libglusterfs/src/globals.h
7f4c2a
@@ -17,23 +17,28 @@
7f4c2a
 #define GD_MIN_OP_VERSION_KEY "minimum-operating-version"
7f4c2a
 #define GD_MAX_OP_VERSION_KEY "maximum-operating-version"
7f4c2a
 
7f4c2a
-/* Gluster versions - OP-VERSION mapping
7f4c2a
+/* RHS versions - OP-VERSION mapping
7f4c2a
  *
7f4c2a
- * 3.3.x                - 1
7f4c2a
- * 3.4.x                - 2
7f4c2a
- * 3.5.0                - 3
7f4c2a
- * 3.5.1                - 30501
7f4c2a
- * 3.6.0                - 30600
7f4c2a
- * 3.7.0                - 30700
7f4c2a
- * 3.7.1                - 30701
7f4c2a
- * 3.7.2                - 30702
7f4c2a
+ * RHS-2.0 Z    - 1
7f4c2a
+ * RHS-2.1 Z    - 2
7f4c2a
+ * RHS-2.1 u5   - 20105
7f4c2a
+ * RHS-3.0      - 30000
7f4c2a
+ * RHS-3.0.4    - 30004
7f4c2a
+ * RHGS-3.1     - 30702
7f4c2a
  *
7f4c2a
- * Starting with Gluster v3.6, the op-version will be multi-digit integer values
7f4c2a
- * based on the Glusterfs version, instead of a simply incrementing integer
7f4c2a
- * value. The op-version for a given X.Y.Z release will be an integer XYZ, with
7f4c2a
- * Y and Z 2 digit always 2 digits wide and padded with 0 when needed. This
7f4c2a
- * should allow for some gaps between two Y releases for backports of features
7f4c2a
- * in Z releases.
7f4c2a
+ *
7f4c2a
+ * NOTE:
7f4c2a
+ * Starting with RHS-3.0, the op-version will be multi-digit integer values
7f4c2a
+ * based on the RHS version, instead of a simply incrementing integer value. The
7f4c2a
+ * op-version for a given RHS X(Major).Y(Minor).Z(Update) release will be an
7f4c2a
+ * integer with digits XYZ. The Y and Z values will be 2 digits wide always
7f4c2a
+ * padded with 0 as needed. This should allow for some gaps between two Y
7f4c2a
+ * releases for backports of features in Z releases.
7f4c2a
+ *
7f4c2a
+ * NOTE:
7f4c2a
+ * Starting with RHGS-3.1, the op-version will be the same as the upstream
7f4c2a
+ * GlusterFS op-versions. This is to allow proper access to upstream clients of
7f4c2a
+ * version 3.7.x or greater, proper access to the RHGS volumes.
7f4c2a
  */
7f4c2a
 #define GD_OP_VERSION_MIN  1 /* MIN is the fresh start op-version, mostly
7f4c2a
                                 should not change */
7f4c2a
@@ -41,7 +46,13 @@
7f4c2a
                                     table, should keep changing with
7f4c2a
                                     introduction of newer versions */
7f4c2a
 
7f4c2a
-#define GD_OP_VERSION_3_6_0    30600 /* Op-Version for GlusterFS 3.6.0 */
7f4c2a
+#define GD_OP_VERSION_RHS_3_0    30000 /* Op-Version of RHS 3.0 */
7f4c2a
+
7f4c2a
+#define GD_OP_VER_PERSISTENT_AFR_XATTRS GD_OP_VERSION_RHS_3_0
7f4c2a
+
7f4c2a
+#define GD_OP_VERSION_RHS_2_1_5  20105 /* RHS 2.1 update 5 */
7f4c2a
+
7f4c2a
+#define GD_OP_VERSION_RHS_3_0_4  30004 /* Op-Version of RHS 3.0.4 */
7f4c2a
 
7f4c2a
 #define GD_OP_VERSION_3_7_0    30700 /* Op-version for GlusterFS 3.7.0 */
7f4c2a
 
7f4c2a
@@ -49,8 +60,6 @@
7f4c2a
 
7f4c2a
 #define GD_OP_VERSION_3_7_2    30702 /* Op-version for GlusterFS 3.7.2 */
7f4c2a
 
7f4c2a
-#define GD_OP_VER_PERSISTENT_AFR_XATTRS GD_OP_VERSION_3_6_0
7f4c2a
-
7f4c2a
 #include "xlator.h"
7f4c2a
 
7f4c2a
 /* THIS */
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
7f4c2a
index aa3a6c9..49bd887 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
7f4c2a
@@ -1196,7 +1196,7 @@ glusterd_op_perform_add_bricks (glusterd_volinfo_t *volinfo, int32_t count,
7f4c2a
                 /* A bricks mount dir is required only by snapshots which were
7f4c2a
                  * introduced in gluster-3.6.0
7f4c2a
                  */
7f4c2a
-                if (conf->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+                if (conf->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                         brick_mount_dir = NULL;
7f4c2a
 
7f4c2a
                         snprintf (key, sizeof(key), "brick%d.mount_dir", i);
7f4c2a
@@ -1528,7 +1528,7 @@ glusterd_op_stage_add_brick (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
7f4c2a
                         /* A bricks mount dir is required only by snapshots which were
7f4c2a
                          * introduced in gluster-3.6.0
7f4c2a
                          */
7f4c2a
-                        if (conf->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+                        if (conf->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                                 ret = glusterd_get_brick_mount_dir
7f4c2a
                                         (brickinfo->path, brickinfo->hostname,
7f4c2a
                                          brickinfo->mount_dir);
7f4c2a
@@ -1707,12 +1707,12 @@ glusterd_op_stage_remove_brick (dict_t *dict, char **op_errstr)
7f4c2a
                 }
7f4c2a
 
7f4c2a
                 /* Check if the connected clients are all of version
7f4c2a
-                 * glusterfs-3.6 and higher. This is needed to prevent some data
7f4c2a
+                 * RHS-2.1u5 and higher. This is needed to prevent some data
7f4c2a
                  * loss issues that could occur when older clients are connected
7f4c2a
                  * when rebalance is run.
7f4c2a
                  */
7f4c2a
                 ret = glusterd_check_client_op_version_support
7f4c2a
-                        (volname, GD_OP_VERSION_3_6_0, NULL);
7f4c2a
+                        (volname, GD_OP_VERSION_RHS_2_1_5, NULL);
7f4c2a
                 if (ret) {
7f4c2a
                         ret = gf_asprintf (op_errstr, "Volume %s has one or "
7f4c2a
                                            "more connected clients of a version"
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c
7f4c2a
index 564d787..9c922e3 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-handler.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-handler.c
7f4c2a
@@ -668,7 +668,7 @@ glusterd_op_txn_begin (rpcsvc_request_t *req, glusterd_op_t op, void *ctx,
7f4c2a
         }
7f4c2a
 
7f4c2a
         /* Based on the op_version, acquire a cluster or mgmt_v3 lock */
7f4c2a
-        if (priv->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (priv->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = glusterd_lock (MY_UUID);
7f4c2a
                 if (ret) {
7f4c2a
                         gf_log (this->name, GF_LOG_ERROR,
7f4c2a
@@ -715,7 +715,7 @@ glusterd_op_txn_begin (rpcsvc_request_t *req, glusterd_op_t op, void *ctx,
7f4c2a
 local_locking_done:
7f4c2a
         /* If no volname is given as a part of the command, locks will
7f4c2a
          * not be held, hence sending stage event. */
7f4c2a
-        if (volname || (priv->op_version < GD_OP_VERSION_3_6_0))
7f4c2a
+        if (volname || (priv->op_version < GD_OP_VERSION_RHS_3_0))
7f4c2a
                 event_type = GD_OP_EVENT_START_LOCK;
7f4c2a
         else {
7f4c2a
                 txn_op_info.state.state = GD_OP_STATE_LOCK_SENT;
7f4c2a
@@ -745,7 +745,7 @@ out:
7f4c2a
         if (locked && ret) {
7f4c2a
                 /* Based on the op-version, we release the
7f4c2a
                  * cluster or mgmt_v3 lock */
7f4c2a
-                if (priv->op_version < GD_OP_VERSION_3_6_0)
7f4c2a
+                if (priv->op_version < GD_OP_VERSION_RHS_3_0)
7f4c2a
                         glusterd_unlock (MY_UUID);
7f4c2a
                 else {
7f4c2a
                         ret = glusterd_mgmt_v3_unlock (volname, MY_UUID,
7f4c2a
@@ -4069,11 +4069,11 @@ __glusterd_handle_status_volume (rpcsvc_request_t *req)
7f4c2a
         }
7f4c2a
 
7f4c2a
         if ((cmd & GF_CLI_STATUS_SNAPD) &&
7f4c2a
-            (conf->op_version < GD_OP_VERSION_3_6_0)) {
7f4c2a
+            (conf->op_version < GD_OP_VERSION_RHS_3_0)) {
7f4c2a
                 snprintf (err_str, sizeof (err_str), "The cluster is operating "
7f4c2a
                           "at a lesser version than %d. Getting the status of "
7f4c2a
                           "snapd is not allowed in this state",
7f4c2a
-                          GD_OP_VERSION_3_6_0);
7f4c2a
+                          GD_OP_VERSION_RHS_3_0);
7f4c2a
                 ret = -1;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -4814,7 +4814,7 @@ __glusterd_peer_rpc_notify (struct rpc_clnt *rpc, void *mydata,
7f4c2a
                         glusterd_friend_sm_state_name_get (peerinfo->state.state));
7f4c2a
 
7f4c2a
                 if (peerinfo->connected) {
7f4c2a
-                        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+                        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                                 glusterd_get_lock_owner (&uuid);
7f4c2a
                                 if (!gf_uuid_is_null (uuid) &&
7f4c2a
                                     !gf_uuid_compare (peerinfo->uuid, uuid))
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
7f4c2a
index 877e9ac..6cf200d 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
7f4c2a
@@ -197,7 +197,7 @@ glusterd_generate_txn_id (dict_t *dict, uuid_t **txn_id)
7f4c2a
         if (!*txn_id)
7f4c2a
                 goto out;
7f4c2a
 
7f4c2a
-        if (priv->op_version < GD_OP_VERSION_3_6_0)
7f4c2a
+        if (priv->op_version < GD_OP_VERSION_RHS_3_0)
7f4c2a
                 gf_uuid_copy (**txn_id, priv->global_txn_id);
7f4c2a
         else
7f4c2a
                 gf_uuid_generate (**txn_id);
7f4c2a
@@ -1453,11 +1453,11 @@ glusterd_op_stage_status_volume (dict_t *dict, char **op_errstr)
7f4c2a
         }
7f4c2a
 
7f4c2a
         if ((cmd & GF_CLI_STATUS_SNAPD) &&
7f4c2a
-            (priv->op_version < GD_OP_VERSION_3_6_0)) {
7f4c2a
+            (priv->op_version < GD_OP_VERSION_RHS_3_0)) {
7f4c2a
                 snprintf (msg, sizeof (msg), "The cluster is operating at "
7f4c2a
                           "version less than %d. Getting the "
7f4c2a
                           "status of snapd is not allowed in this state.",
7f4c2a
-                          GD_OP_VERSION_3_6_0);
7f4c2a
+                          GD_OP_VERSION_RHS_3_0);
7f4c2a
                 ret = -1;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -3203,7 +3203,7 @@ glusterd_op_ac_send_lock (glusterd_op_sm_event_t *event, void *ctx)
7f4c2a
                         continue;
7f4c2a
 
7f4c2a
                 /* Based on the op_version, acquire a cluster or mgmt_v3 lock */
7f4c2a
-                if (priv->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+                if (priv->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                         proc = &peerinfo->mgmt->proctable
7f4c2a
                                           [GLUSTERD_MGMT_CLUSTER_LOCK];
7f4c2a
                         if (proc->fn) {
7f4c2a
@@ -3302,7 +3302,7 @@ glusterd_op_ac_send_unlock (glusterd_op_sm_event_t *event, void *ctx)
7f4c2a
                         continue;
7f4c2a
                 /* Based on the op_version,
7f4c2a
                  * release the cluster or mgmt_v3 lock */
7f4c2a
-                if (priv->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+                if (priv->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                         proc = &peerinfo->mgmt->proctable
7f4c2a
                                           [GLUSTERD_MGMT_CLUSTER_UNLOCK];
7f4c2a
                         if (proc->fn) {
7f4c2a
@@ -4263,7 +4263,7 @@ glusterd_op_modify_op_ctx (glusterd_op_t op, void *ctx)
7f4c2a
                 count = brick_index_max + other_count + 1;
7f4c2a
 
7f4c2a
                 /*
7f4c2a
-                 * a glusterd lesser than version 3.7 will be sending the
7f4c2a
+                 * a glusterd lesser than version RHS-3.0.4 will be sending the
7f4c2a
                  * rdma port in older key. Changing that value from here
7f4c2a
                  * to support backward compatibility
7f4c2a
                  */
7f4c2a
@@ -4272,7 +4272,7 @@ glusterd_op_modify_op_ctx (glusterd_op_t op, void *ctx)
7f4c2a
                         goto out;
7f4c2a
 
7f4c2a
                  glusterd_volinfo_find (volname, &volinfo);
7f4c2a
-                 if (conf->op_version < GD_OP_VERSION_3_7_0 &&
7f4c2a
+                 if (conf->op_version < GD_OP_VERSION_RHS_3_0_4 &&
7f4c2a
                      volinfo->transport_type == GF_TRANSPORT_RDMA) {
7f4c2a
                          ret = glusterd_op_modify_port_key (op_ctx,
7f4c2a
                                                             brick_index_max);
7f4c2a
@@ -4820,7 +4820,7 @@ glusterd_op_txn_complete (uuid_t *txn_id)
7f4c2a
         glusterd_op_clear_errstr ();
7f4c2a
 
7f4c2a
         /* Based on the op-version, we release the cluster or mgmt_v3 lock */
7f4c2a
-        if (priv->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (priv->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = glusterd_unlock (MY_UUID);
7f4c2a
                 /* unlock cant/shouldnt fail here!! */
7f4c2a
                 if (ret)
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-peer-utils.c b/xlators/mgmt/glusterd/src/glusterd-peer-utils.c
7f4c2a
index 9a05941..6df1dae 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-peer-utils.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-peer-utils.c
7f4c2a
@@ -522,7 +522,7 @@ out:
7f4c2a
  * @prefix. All the parameters are compulsory.
7f4c2a
  *
7f4c2a
  * The complete address list is added to the dict only if the cluster op-version
7f4c2a
- * is >= GD_OP_VERSION_3_6_0
7f4c2a
+ * is >= GD_OP_VERSION_3_7_0
7f4c2a
  */
7f4c2a
 int
7f4c2a
 gd_add_friend_to_dict (glusterd_peerinfo_t *friend, dict_t *dict,
7f4c2a
@@ -573,7 +573,7 @@ gd_add_friend_to_dict (glusterd_peerinfo_t *friend, dict_t *dict,
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_3_7_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -759,7 +759,7 @@ gd_update_peerinfo_from_dict (glusterd_peerinfo_t *peerinfo, dict_t *dict,
7f4c2a
                 GF_FREE (peerinfo->hostname);
7f4c2a
         peerinfo->hostname = gf_strdup (hostname);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_3_7_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -867,7 +867,7 @@ gd_add_peer_hostnames_to_dict (glusterd_peerinfo_t *peerinfo, dict_t *dict,
7f4c2a
         conf = this->private;
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (conf != NULL), out);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_3_7_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c
7f4c2a
index f2708f0..0367df3 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c
7f4c2a
@@ -602,13 +602,13 @@ glusterd_op_stage_rebalance (dict_t *dict, char **op_errstr)
7f4c2a
         case GF_DEFRAG_CMD_START_LAYOUT_FIX:
7f4c2a
         case GF_DEFRAG_CMD_START_TIER:
7f4c2a
                 /* Check if the connected clients are all of version
7f4c2a
-                 * glusterfs-3.6 and higher. This is needed to prevent some data
7f4c2a
+                 * RHS-2.1u5 and higher. This is needed to prevent some data
7f4c2a
                  * loss issues that could occur when older clients are connected
7f4c2a
                  * when rebalance is run. This check can be bypassed by using
7f4c2a
                  * 'force'
7f4c2a
                  */
7f4c2a
                 ret = glusterd_check_client_op_version_support
7f4c2a
-                        (volname, GD_OP_VERSION_3_6_0, NULL);
7f4c2a
+                        (volname, GD_OP_VERSION_RHS_2_1_5, NULL);
7f4c2a
                 if (ret) {
7f4c2a
                         ret = gf_asprintf (op_errstr, "Volume %s has one or "
7f4c2a
                                            "more connected clients of a version"
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
7f4c2a
index cb9c67c..9806556 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
7f4c2a
@@ -410,7 +410,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr,
7f4c2a
                 if (ret)
7f4c2a
                         goto out;
7f4c2a
 
7f4c2a
-        } else if (priv->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+        } else if (priv->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 /* A bricks mount dir is required only by snapshots which were
7f4c2a
                  * introduced in gluster-3.6.0
7f4c2a
                  */
7f4c2a
@@ -618,7 +618,7 @@ glusterd_op_perform_replace_brick (glusterd_volinfo_t  *volinfo,
7f4c2a
         /* A bricks mount dir is required only by snapshots which were
7f4c2a
          * introduced in gluster-3.6.0
7f4c2a
          */
7f4c2a
-        if (conf->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = dict_get_str (dict, "brick1.mount_dir", &brick_mount_dir);
7f4c2a
                 if (ret) {
7f4c2a
                         gf_log (this->name, GF_LOG_ERROR,
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c
7f4c2a
index dcd257c..2f9bac8 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c
7f4c2a
@@ -288,11 +288,11 @@ __glusterd_probe_cbk (struct rpc_req *req, struct iovec *iov,
7f4c2a
          * we need to add the new hostname to the peer.
7f4c2a
          *
7f4c2a
          * This addition should only be done for cluster op-version >=
7f4c2a
-         * GD_OP_VERSION_3_6_0 as address lists are only supported from then on.
7f4c2a
+         * GD_OP_VERSION_3_7_0 as address lists are only supported from then on.
7f4c2a
          * Also, this update should only be done when an explicit CLI probe
7f4c2a
          * command was used to begin the probe process.
7f4c2a
          */
7f4c2a
-        if ((conf->op_version >= GD_OP_VERSION_3_6_0) &&
7f4c2a
+        if ((conf->op_version >= GD_OP_VERSION_3_7_0) &&
7f4c2a
             (gf_uuid_compare (rsp.uuid, peerinfo->uuid) == 0)) {
7f4c2a
                 ctx = ((call_frame_t *)myframe)->local;
7f4c2a
                 /* Presence of ctx->req implies this probe was started by a cli
7f4c2a
@@ -1481,7 +1481,7 @@ glusterd_rpc_friend_add (call_frame_t *frame, xlator_t *this,
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
 
7f4c2a
-        if (priv->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (priv->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = glusterd_add_missed_snaps_to_export_dict (peer_data);
7f4c2a
                 if (ret) {
7f4c2a
                         gf_log (this->name, GF_LOG_ERROR,
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-sm.c b/xlators/mgmt/glusterd/src/glusterd-sm.c
7f4c2a
index 0d8654a..6f41b7b 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-sm.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-sm.c
7f4c2a
@@ -789,7 +789,7 @@ glusterd_ac_handle_friend_add_req (glusterd_friend_sm_event_t *event, void *ctx)
7f4c2a
         /* Compare missed_snapshot list with the peer *
7f4c2a
          * if volume comparison is successful */
7f4c2a
         if ((op_ret == 0) &&
7f4c2a
-            (conf->op_version >= GD_OP_VERSION_3_6_0)) {
7f4c2a
+            (conf->op_version >= GD_OP_VERSION_RHS_3_0)) {
7f4c2a
                 ret = glusterd_import_friend_missed_snap_list (ev_ctx->vols);
7f4c2a
                 if (ret) {
7f4c2a
                         gf_log (this->name, GF_LOG_ERROR,
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
7f4c2a
index 294758b..6e4b363 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c
7f4c2a
@@ -383,7 +383,7 @@ gd_add_brick_snap_details_to_dict (dict_t *dict, char *prefix,
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out);
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (brickinfo != NULL), out);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -465,7 +465,7 @@ gd_add_vol_snap_details_to_dict (dict_t *dict, char *prefix,
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (volinfo != NULL), out);
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -793,7 +793,7 @@ gd_import_new_brick_snap_details (dict_t *dict, char *prefix,
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out);
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (brickinfo != NULL), out);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -853,8 +853,8 @@ out:
7f4c2a
  * Imports the snapshot details of a volume if required and available
7f4c2a
  *
7f4c2a
  * Snapshot details will be imported only if cluster.op_version is greater than
7f4c2a
- * or equal to GD_OP_VERSION_3_6_0, the op-version from which volume snapshot is
7f4c2a
- * supported.
7f4c2a
+ * or equal to GD_OP_VERSION_RHS_3_0, the op-version from which volume snapshot
7f4c2a
+ * is supported.
7f4c2a
  */
7f4c2a
 int
7f4c2a
 gd_import_volume_snap_details (dict_t *dict, glusterd_volinfo_t *volinfo,
7f4c2a
@@ -876,7 +876,7 @@ gd_import_volume_snap_details (dict_t *dict, glusterd_volinfo_t *volinfo,
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out);
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (volname != NULL), out);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
7f4c2a
index 0ea3935..f779bff 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
7f4c2a
@@ -8852,7 +8852,7 @@ glusterd_handle_snapshot_fn (rpcsvc_request_t *req)
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 snprintf (err_str, sizeof (err_str), "Cluster operating version"
7f4c2a
                           " is lesser than the supported version "
7f4c2a
                           "for a snapshot");
7f4c2a
@@ -8860,7 +8860,7 @@ glusterd_handle_snapshot_fn (rpcsvc_request_t *req)
7f4c2a
                 gf_msg (this->name, GF_LOG_ERROR, 0,
7f4c2a
                         GD_MSG_UNSUPPORTED_VERSION,
7f4c2a
                         "%s (%d < %d)", err_str,
7f4c2a
-                        conf->op_version, GD_OP_VERSION_3_6_0);
7f4c2a
+                        conf->op_version, GD_OP_VERSION_RHS_3_0);
7f4c2a
                 ret = -1;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c
7f4c2a
index ee279d3..ae87e9a 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-store.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-store.c
7f4c2a
@@ -305,7 +305,7 @@ gd_store_brick_snap_details_write (int fd, glusterd_brickinfo_t *brickinfo)
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (fd > 0), out);
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (brickinfo != NULL), out);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -771,7 +771,7 @@ glusterd_volume_write_snap_details (int fd, glusterd_volinfo_t *volinfo)
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (fd > 0), out);
7f4c2a
         GF_VALIDATE_OR_GOTO (this->name, (volinfo != NULL), out);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -2075,7 +2075,7 @@ glusterd_store_retrieve_snapd (glusterd_volinfo_t *volinfo)
7f4c2a
         conf = THIS->private;
7f4c2a
         GF_ASSERT (volinfo);
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = 0;
7f4c2a
                 goto out;
7f4c2a
         }
7f4c2a
@@ -2083,15 +2083,16 @@ glusterd_store_retrieve_snapd (glusterd_volinfo_t *volinfo)
7f4c2a
         /*
7f4c2a
          * This is needed for upgrade situations. Say a volume is created with
7f4c2a
          * older version of glusterfs and upgraded to a glusterfs version equal
7f4c2a
-         * to or greater than GD_OP_VERSION_3_6_0. The older glusterd would not
7f4c2a
-         * have created the snapd.info file related to snapshot daemon for user
7f4c2a
-         * serviceable snapshots. So as part of upgrade when the new glusterd
7f4c2a
-         * starts, as part of restore (restoring the volume to be precise), it
7f4c2a
-         * tries to snapd related info from snapd.info file. But since there was
7f4c2a
-         * no such file till now, the restore operation fails. Thus, to prevent
7f4c2a
-         * it from happening check whether user serviceable snapshots features
7f4c2a
-         * is enabled before restoring snapd. If its disbaled, then simply
7f4c2a
-         * exit by returning success (without even checking for the snapd.info).
7f4c2a
+         * to or greater than GD_OP_VERSION_RHS_3_0. The older glusterd would
7f4c2a
+         * not have created the snapd.info file related to snapshot daemon for
7f4c2a
+         * user serviceable snapshots. So as part of upgrade when the new
7f4c2a
+         * glusterd starts, as part of restore (restoring the volume to be
7f4c2a
+         * precise), it tries to snapd related info from snapd.info file. But
7f4c2a
+         * since there was no such file till now, the restore operation fails.
7f4c2a
+         * Thus, to prevent it from happening check whether user serviceable
7f4c2a
+         * snapshots features is enabled before restoring snapd. If its
7f4c2a
+         * disbaled, then simply exit by returning success (without even
7f4c2a
+         * checking for the snapd.info).
7f4c2a
          */
7f4c2a
 
7f4c2a
         if (!dict_get_str_boolean (volinfo->dict, "features.uss", _gf_false)) {
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.c b/xlators/mgmt/glusterd/src/glusterd-syncop.c
7f4c2a
index da12cba..a006afa 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-syncop.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-syncop.c
7f4c2a
@@ -1164,7 +1164,7 @@ gd_lock_op_phase (glusterd_conf_t  *conf, glusterd_op_t op, dict_t *op_ctx,
7f4c2a
                         continue;
7f4c2a
 
7f4c2a
 
7f4c2a
-                if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+                if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                         /* Reset lock status */
7f4c2a
                         peerinfo->locked = _gf_false;
7f4c2a
                         gd_syncop_mgmt_lock (peerinfo, &args,
7f4c2a
@@ -1481,7 +1481,7 @@ gd_unlock_op_phase (glusterd_conf_t  *conf, glusterd_op_t op, int *op_ret,
7f4c2a
         synctask_barrier_init((&args));
7f4c2a
         peer_cnt = 0;
7f4c2a
 
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 rcu_read_lock ();
7f4c2a
                 cds_list_for_each_entry_rcu (peerinfo, &conf->peers,
7f4c2a
                                              uuid_list) {
7f4c2a
@@ -1567,7 +1567,7 @@ out:
7f4c2a
                  * and clear the op */
7f4c2a
 
7f4c2a
                 glusterd_op_clear_op (op);
7f4c2a
-                if (conf->op_version < GD_OP_VERSION_3_6_0)
7f4c2a
+                if (conf->op_version < GD_OP_VERSION_RHS_3_0)
7f4c2a
                         glusterd_unlock (MY_UUID);
7f4c2a
                 else {
7f4c2a
                         if (type) {
7f4c2a
@@ -1760,7 +1760,7 @@ gd_sync_task_begin (dict_t *op_ctx, rpcsvc_request_t * req)
7f4c2a
         }
7f4c2a
 
7f4c2a
         /* Based on the op_version, acquire a cluster or mgmt_v3 lock */
7f4c2a
-        if (conf->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version < GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 ret = glusterd_lock (MY_UUID);
7f4c2a
                 if (ret) {
7f4c2a
                         gf_log (this->name, GF_LOG_ERROR,
7f4c2a
@@ -1829,7 +1829,8 @@ local_locking_done:
7f4c2a
 
7f4c2a
         /* If no volname is given as a part of the command, locks will
7f4c2a
          * not be held */
7f4c2a
-        if (volname || (conf->op_version < GD_OP_VERSION_3_6_0) || is_global) {
7f4c2a
+        if (volname || (conf->op_version < GD_OP_VERSION_RHS_3_0) ||
7f4c2a
+                        is_global) {
7f4c2a
                 ret = gd_lock_op_phase (conf, op, op_ctx, &op_errstr, *txn_id,
7f4c2a
                                         &txn_opinfo);
7f4c2a
                 if (ret) {
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
7f4c2a
index 0721110..82b2e57 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
7f4c2a
@@ -8809,10 +8809,10 @@ gd_update_volume_op_versions (glusterd_volinfo_t *volinfo)
7f4c2a
         }
7f4c2a
 
7f4c2a
         if (volinfo->type == GF_CLUSTER_TYPE_DISPERSE) {
7f4c2a
-                if (volinfo->op_version < GD_OP_VERSION_3_6_0)
7f4c2a
-                        volinfo->op_version = GD_OP_VERSION_3_6_0;
7f4c2a
-                if (volinfo->client_op_version < GD_OP_VERSION_3_6_0)
7f4c2a
-                        volinfo->client_op_version = GD_OP_VERSION_3_6_0;
7f4c2a
+                if (volinfo->op_version < GD_OP_VERSION_3_7_0)
7f4c2a
+                        volinfo->op_version = GD_OP_VERSION_3_7_0;
7f4c2a
+                if (volinfo->client_op_version < GD_OP_VERSION_3_7_0)
7f4c2a
+                        volinfo->client_op_version = GD_OP_VERSION_3_7_0;
7f4c2a
         }
7f4c2a
 
7f4c2a
         return;
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
7f4c2a
index 1d29d50..ea8bf13 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
7f4c2a
@@ -1137,7 +1137,7 @@ glusterd_op_stage_create_volume (dict_t *dict, char **op_errstr,
7f4c2a
                         /* A bricks mount dir is required only by snapshots which were
7f4c2a
                          * introduced in gluster-3.6.0
7f4c2a
                          */
7f4c2a
-                        if (priv->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+                        if (priv->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                                 ret = glusterd_get_brick_mount_dir
7f4c2a
                                         (brick_info->path, brick_info->hostname,
7f4c2a
                                          brick_info->mount_dir);
7f4c2a
@@ -1390,7 +1390,7 @@ glusterd_op_stage_start_volume (dict_t *dict, char **op_errstr,
7f4c2a
                 /* A bricks mount dir is required only by snapshots which were
7f4c2a
                  * introduced in gluster-3.6.0
7f4c2a
                  */
7f4c2a
-                if (priv->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+                if (priv->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                         if (strlen(brickinfo->mount_dir) < 1) {
7f4c2a
                                 ret = glusterd_get_brick_mount_dir
7f4c2a
                                         (brickinfo->path, brickinfo->hostname,
7f4c2a
@@ -2029,9 +2029,9 @@ glusterd_op_create_volume (dict_t *dict, char **op_errstr)
7f4c2a
                                  "redundancy count for volume %s", volname);
7f4c2a
                         goto out;
7f4c2a
                 }
7f4c2a
-                if (priv->op_version < GD_OP_VERSION_3_6_0) {
7f4c2a
+                if (priv->op_version < GD_OP_VERSION_3_7_0) {
7f4c2a
                         gf_log (this->name, GF_LOG_ERROR, "Disperse volume "
7f4c2a
-                                "needs op-version 3.6.0 or higher");
7f4c2a
+                                "needs op-version 30700 or higher");
7f4c2a
                         ret = -1;
7f4c2a
                         goto out;
7f4c2a
                 }
7f4c2a
@@ -2127,7 +2127,7 @@ glusterd_op_create_volume (dict_t *dict, char **op_errstr)
7f4c2a
                 /* A bricks mount dir is required only by snapshots which were
7f4c2a
                  * introduced in gluster-3.6.0
7f4c2a
                  */
7f4c2a
-                if (priv->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+                if (priv->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                         brick_mount_dir = NULL;
7f4c2a
                         snprintf (key, sizeof(key), "brick%d.mount_dir", i);
7f4c2a
                         ret = dict_get_str (dict, key, &brick_mount_dir);
7f4c2a
@@ -2287,7 +2287,7 @@ glusterd_op_start_volume (dict_t *dict, char **op_errstr)
7f4c2a
         /* A bricks mount dir is required only by snapshots which were
7f4c2a
          * introduced in gluster-3.6.0
7f4c2a
          */
7f4c2a
-        if (conf->op_version >= GD_OP_VERSION_3_6_0) {
7f4c2a
+        if (conf->op_version >= GD_OP_VERSION_RHS_3_0) {
7f4c2a
                 cds_list_for_each_entry (brickinfo, &volinfo->bricks,
7f4c2a
                                          brick_list) {
7f4c2a
                         brick_count++;
7f4c2a
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c
7f4c2a
index 8dea069..39bf82f 100644
7f4c2a
--- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c
7f4c2a
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c
7f4c2a
@@ -356,7 +356,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key         = "cluster.subvols-per-directory",
7f4c2a
           .voltype     = "cluster/distribute",
7f4c2a
           .option      = "directory-layout-spread",
7f4c2a
-          .op_version  = 2,
7f4c2a
+          .op_version  = 1,
7f4c2a
           .validate_fn = validate_subvols_per_directory,
7f4c2a
           .flags       = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
@@ -368,27 +368,27 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key        = "cluster.rsync-hash-regex",
7f4c2a
           .voltype    = "cluster/distribute",
7f4c2a
           .type       = NO_DOC,
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = 2,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "cluster.extra-hash-regex",
7f4c2a
           .voltype    = "cluster/distribute",
7f4c2a
           .type       = NO_DOC,
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = 2,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "cluster.dht-xattr-name",
7f4c2a
           .voltype    = "cluster/distribute",
7f4c2a
           .option     = "xattr-name",
7f4c2a
           .type       = NO_DOC,
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = 2,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "cluster.randomize-hash-range-by-gfid",
7f4c2a
           .voltype    = "cluster/distribute",
7f4c2a
           .option     = "randomize-hash-range-by-gfid",
7f4c2a
           .type       = NO_DOC,
7f4c2a
-          .op_version = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version = GD_OP_VERSION_3_7_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT,
7f4c2a
         },
7f4c2a
         { .key         = "cluster.rebal-throttle",
7f4c2a
@@ -410,12 +410,12 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype    = "cluster/nufa",
7f4c2a
           .option     = "local-volume-name",
7f4c2a
           .type       = NO_DOC,
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "cluster.weighted-rebalance",
7f4c2a
           .voltype    = "cluster/distribute",
7f4c2a
-          .op_version = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version = GD_OP_VERSION_3_7_0,
7f4c2a
         },
7f4c2a
 
7f4c2a
         /* Switch xlator options (Distribute special case) */
7f4c2a
@@ -423,14 +423,14 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype    = "cluster/distribute",
7f4c2a
           .option     = "!switch",
7f4c2a
           .type       = NO_DOC,
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "cluster.switch-pattern",
7f4c2a
           .voltype    = "cluster/switch",
7f4c2a
           .option     = "pattern.switch.case",
7f4c2a
           .type       = NO_DOC,
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
 
7f4c2a
@@ -550,18 +550,18 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         },
7f4c2a
         { .key        = "cluster.readdir-failover",
7f4c2a
           .voltype    = "cluster/replicate",
7f4c2a
-          .op_version = 2,
7f4c2a
+          .op_version = 1,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "cluster.ensure-durability",
7f4c2a
           .voltype    = "cluster/replicate",
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = 2,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "cluster.consistent-metadata",
7f4c2a
           .voltype    = "cluster/replicate",
7f4c2a
           .type       = DOC,
7f4c2a
-          .op_version = GD_OP_VERSION_3_7_0,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0_4,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key         = "cluster.stripe-block-size",
7f4c2a
@@ -621,45 +621,45 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key         = "diagnostics.brick-logger",
7f4c2a
           .voltype     = "debug/io-stats",
7f4c2a
           .option      = "!logger",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key        = "diagnostics.client-logger",
7f4c2a
           .voltype    = "debug/io-stats",
7f4c2a
           .option     = "!logger",
7f4c2a
-          .op_version = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key         = "diagnostics.brick-log-format",
7f4c2a
           .voltype     = "debug/io-stats",
7f4c2a
           .option      = "!log-format",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key        = "diagnostics.client-log-format",
7f4c2a
           .voltype    = "debug/io-stats",
7f4c2a
           .option     = "!log-format",
7f4c2a
-          .op_version = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key         = "diagnostics.brick-log-buf-size",
7f4c2a
           .voltype     = "debug/io-stats",
7f4c2a
           .option      = "!log-buf-size",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key        = "diagnostics.client-log-buf-size",
7f4c2a
           .voltype    = "debug/io-stats",
7f4c2a
           .option     = "!log-buf-size",
7f4c2a
-          .op_version = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key         = "diagnostics.brick-log-flush-timeout",
7f4c2a
           .voltype     = "debug/io-stats",
7f4c2a
           .option      = "!log-flush-timeout",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key        = "diagnostics.client-log-flush-timeout",
7f4c2a
           .voltype    = "debug/io-stats",
7f4c2a
           .option     = "!log-flush-timeout",
7f4c2a
-          .op_version = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
 
7f4c2a
@@ -724,7 +724,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         },
7f4c2a
         { .key         = "performance.least-rate-limit",
7f4c2a
           .voltype     = "performance/io-threads",
7f4c2a
-          .op_version  = 2
7f4c2a
+          .op_version  = 1
7f4c2a
         },
7f4c2a
 
7f4c2a
         /* Other perf xlators' options */
7f4c2a
@@ -743,7 +743,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key        = "performance.nfs.flush-behind",
7f4c2a
           .voltype    = "performance/write-behind",
7f4c2a
           .option     = "flush-behind",
7f4c2a
-          .op_version = 1,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "performance.write-behind-window-size",
7f4c2a
@@ -755,43 +755,43 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key        = "performance.nfs.write-behind-window-size",
7f4c2a
           .voltype    = "performance/write-behind",
7f4c2a
           .option     = "cache-size",
7f4c2a
-          .op_version = 1,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "performance.strict-o-direct",
7f4c2a
           .voltype    = "performance/write-behind",
7f4c2a
           .option     = "strict-O_DIRECT",
7f4c2a
-          .op_version = 2,
7f4c2a
+          .op_version = 1,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "performance.nfs.strict-o-direct",
7f4c2a
           .voltype    = "performance/write-behind",
7f4c2a
           .option     = "strict-O_DIRECT",
7f4c2a
-          .op_version = 2,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "performance.strict-write-ordering",
7f4c2a
           .voltype    = "performance/write-behind",
7f4c2a
           .option     = "strict-write-ordering",
7f4c2a
-          .op_version = 2,
7f4c2a
+          .op_version = 1,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "performance.nfs.strict-write-ordering",
7f4c2a
           .voltype    = "performance/write-behind",
7f4c2a
           .option     = "strict-write-ordering",
7f4c2a
-          .op_version = 2,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "performance.lazy-open",
7f4c2a
           .voltype    = "performance/open-behind",
7f4c2a
           .option     = "lazy-open",
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = 2,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "performance.read-after-open",
7f4c2a
           .voltype    = "performance/open-behind",
7f4c2a
           .option     = "read-after-open",
7f4c2a
-          .op_version = 3,
7f4c2a
+          .op_version = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key        = "performance.read-ahead-page-count",
7f4c2a
@@ -813,7 +813,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
 	  .voltype     = "encryption/crypt",
7f4c2a
 	  .option      = "!feat",
7f4c2a
 	  .value       = "off",
7f4c2a
-	  .op_version  = 3,
7f4c2a
+	  .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
 	  .description = "enable/disable client-side encryption for "
7f4c2a
                          "the volume.",
7f4c2a
 	  .flags       = OPT_FLAG_CLIENT_OPT | OPT_FLAG_XLATOR_OPT
7f4c2a
@@ -821,17 +821,17 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
 
7f4c2a
         { .key         = "encryption.master-key",
7f4c2a
           .voltype     = "encryption/crypt",
7f4c2a
-          .op_version  = 3,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key         = "encryption.data-key-size",
7f4c2a
           .voltype     = "encryption/crypt",
7f4c2a
-          .op_version  = 3,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key         = "encryption.block-size",
7f4c2a
           .voltype     = "encryption/crypt",
7f4c2a
-          .op_version  = 3,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
 
7f4c2a
@@ -873,7 +873,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key        = "network.remote-dio",
7f4c2a
           .voltype    = "protocol/client",
7f4c2a
           .option     = "filter-O_DIRECT",
7f4c2a
-          .op_version = 2,
7f4c2a
+          .op_version = 1,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT
7f4c2a
         },
7f4c2a
         { .key         = "client.own-thread",
7f4c2a
@@ -884,7 +884,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         },
7f4c2a
         { .key         = "client.event-threads",
7f4c2a
           .voltype     = "protocol/client",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_7_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0_4,
7f4c2a
         },
7f4c2a
 
7f4c2a
         /* Server xlator options */
7f4c2a
@@ -928,17 +928,17 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key         = "server.root-squash",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
           .option      = "root-squash",
7f4c2a
-          .op_version  = 2
7f4c2a
+          .op_version  = 1
7f4c2a
         },
7f4c2a
         { .key         = "server.anonuid",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
           .option      = "anonuid",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0
7f4c2a
         },
7f4c2a
         { .key         = "server.anongid",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
           .option      = "anongid",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0
7f4c2a
         },
7f4c2a
         { .key         = "server.statedump-path",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
@@ -949,7 +949,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
           .option      = "rpc.outstanding-rpc-limit",
7f4c2a
           .type        = GLOBAL_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "features.lock-heal",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
@@ -974,20 +974,20 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .option      = "!ssl-allow",
7f4c2a
           .value       = "*",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_3_7_0,
7f4c2a
         },
7f4c2a
         { .key         = "server.manage-gids",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "client.send-gids",
7f4c2a
           .voltype     = "protocol/client",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "server.gid-timeout",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "server.own-thread",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
@@ -997,19 +997,19 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         },
7f4c2a
         { .key         = "server.event-threads",
7f4c2a
           .voltype     = "protocol/server",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_7_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0_4,
7f4c2a
         },
7f4c2a
 
7f4c2a
         /* Generic transport options */
7f4c2a
         { .key         = SSL_CERT_DEPTH_OPT,
7f4c2a
           .voltype     = "rpc-transport/socket",
7f4c2a
           .option      = "!ssl-cert-depth",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_3_7_0,
7f4c2a
         },
7f4c2a
         { .key         = SSL_CIPHER_LIST_OPT,
7f4c2a
           .voltype     = "rpc-transport/socket",
7f4c2a
           .option      = "!ssl-cipher-list",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_3_7_0,
7f4c2a
         },
7f4c2a
 
7f4c2a
         /* Performance xlators enable/disbable options */
7f4c2a
@@ -1034,7 +1034,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "performance/readdir-ahead",
7f4c2a
           .option      = "!perf",
7f4c2a
           .value       = "off",
7f4c2a
-          .op_version  = 3,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .description = "enable/disable readdir-ahead translator in the volume.",
7f4c2a
           .flags       = OPT_FLAG_CLIENT_OPT | OPT_FLAG_XLATOR_OPT
7f4c2a
         },
7f4c2a
@@ -1143,7 +1143,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "features/qemu-block",
7f4c2a
           .option      = "!feat",
7f4c2a
           .value       = "off",
7f4c2a
-          .op_version  = 3,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .description = "enable/disable file-snapshot feature in the "
7f4c2a
                          "volume.",
7f4c2a
           .flags       = OPT_FLAG_CLIENT_OPT | OPT_FLAG_XLATOR_OPT
7f4c2a
@@ -1151,7 +1151,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
 
7f4c2a
         { .key         = "features.uss",
7f4c2a
           .voltype     = "features/snapview-server",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .value       = "off",
7f4c2a
           .flags       = OPT_FLAG_CLIENT_OPT | OPT_FLAG_XLATOR_OPT,
7f4c2a
           .validate_fn = validate_uss,
7f4c2a
@@ -1161,7 +1161,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
 
7f4c2a
         { .key         = "features.snapshot-directory",
7f4c2a
           .voltype     = "features/snapview-client",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .value       = ".snaps",
7f4c2a
           .flags       = OPT_FLAG_CLIENT_OPT | OPT_FLAG_XLATOR_OPT,
7f4c2a
           .description = "Entry point directory for entering snapshot world"
7f4c2a
@@ -1169,7 +1169,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
 
7f4c2a
         { .key         = "features.show-snapshot-directory",
7f4c2a
           .voltype     = "features/snapview-client",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .value       = "off",
7f4c2a
           .flags       = OPT_FLAG_CLIENT_OPT | OPT_FLAG_XLATOR_OPT,
7f4c2a
           .description = "show entry point in readdir output of "
7f4c2a
@@ -1184,35 +1184,35 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "features/cdc",
7f4c2a
           .option      = "!feat",
7f4c2a
           .value       = "off",
7f4c2a
-          .op_version  = 3,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
           .description = "enable/disable network compression translator",
7f4c2a
           .flags       = OPT_FLAG_XLATOR_OPT
7f4c2a
         },
7f4c2a
         { .key         = "network.compression.window-size",
7f4c2a
           .voltype     = "features/cdc",
7f4c2a
           .option      = "window-size",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0
7f4c2a
         },
7f4c2a
         { .key         = "network.compression.mem-level",
7f4c2a
           .voltype     = "features/cdc",
7f4c2a
           .option      = "mem-level",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0
7f4c2a
         },
7f4c2a
         { .key         = "network.compression.min-size",
7f4c2a
           .voltype     = "features/cdc",
7f4c2a
           .option      = "min-size",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0
7f4c2a
         },
7f4c2a
         { .key         = "network.compression.compression-level",
7f4c2a
           .voltype     = "features/cdc",
7f4c2a
           .option      = "compression-level",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0
7f4c2a
         },
7f4c2a
         { .key         = "network.compression.debug",
7f4c2a
           .voltype     = "features/cdc",
7f4c2a
           .option      = "debug",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0
7f4c2a
         },
7f4c2a
 #endif
7f4c2a
 
7f4c2a
@@ -1235,25 +1235,25 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype       = "features/quota",
7f4c2a
           .option        = "default-soft-limit",
7f4c2a
           .type          = NO_DOC,
7f4c2a
-          .op_version    = 3,
7f4c2a
+          .op_version    = 2,
7f4c2a
         },
7f4c2a
         { .key           = "features.soft-timeout",
7f4c2a
           .voltype       = "features/quota",
7f4c2a
           .option        = "soft-timeout",
7f4c2a
           .type          = NO_DOC,
7f4c2a
-          .op_version    = 3,
7f4c2a
+          .op_version    = 2,
7f4c2a
         },
7f4c2a
         { .key           = "features.hard-timeout",
7f4c2a
           .voltype       = "features/quota",
7f4c2a
           .option        = "hard-timeout",
7f4c2a
           .type          = NO_DOC,
7f4c2a
-          .op_version    = 3,
7f4c2a
+          .op_version    = 2,
7f4c2a
         },
7f4c2a
         { .key           = "features.alert-time",
7f4c2a
           .voltype       = "features/quota",
7f4c2a
           .option        = "alert-time",
7f4c2a
           .type          = NO_DOC,
7f4c2a
-          .op_version    = 3,
7f4c2a
+          .op_version    = 2,
7f4c2a
         },
7f4c2a
         { .key           = "features.quota-deem-statfs",
7f4c2a
           .voltype       = "features/quota",
7f4c2a
@@ -1368,25 +1368,25 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "debug/error-gen",
7f4c2a
           .option      = "failure",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "debug.error-number",
7f4c2a
           .voltype     = "debug/error-gen",
7f4c2a
           .option      = "error-no",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "debug.random-failure",
7f4c2a
           .voltype     = "debug/error-gen",
7f4c2a
           .option      = "random-failure",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "debug.error-fops",
7f4c2a
           .voltype     = "debug/error-gen",
7f4c2a
           .option      = "enable",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
 
7f4c2a
 
7f4c2a
@@ -1437,7 +1437,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "rpc.outstanding-rpc-limit",
7f4c2a
           .type        = GLOBAL_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "nfs.port",
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
@@ -1512,7 +1512,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "nfs.acl",
7f4c2a
           .type        = GLOBAL_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "nfs.mount-udp",
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
@@ -1530,13 +1530,13 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "nfs.rpc-statd",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "nfs.log-level",
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "nfs.log-level",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "nfs.server-aux-gids",
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
@@ -1548,31 +1548,31 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "nfs.drc",
7f4c2a
           .type        = GLOBAL_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 1
7f4c2a
         },
7f4c2a
         { .key         = "nfs.drc-size",
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "nfs.drc-size",
7f4c2a
           .type        = GLOBAL_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 1
7f4c2a
         },
7f4c2a
         { .key         = "nfs.read-size",
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "nfs3.read-size",
7f4c2a
           .type        = GLOBAL_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "nfs.write-size",
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "nfs3.write-size",
7f4c2a
           .type        = GLOBAL_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "nfs.readdir-size",
7f4c2a
           .voltype     = "nfs/server",
7f4c2a
           .option      = "nfs3.readdir-size",
7f4c2a
           .type        = GLOBAL_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
 
7f4c2a
         /* Cli options for Export authentication on nfs mount */
7f4c2a
@@ -1599,7 +1599,7 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key        = "features.read-only",
7f4c2a
           .voltype    = "features/read-only",
7f4c2a
           .option     = "read-only",
7f4c2a
-          .op_version = 1,
7f4c2a
+          .op_version = 2,
7f4c2a
           .flags      = OPT_FLAG_CLIENT_OPT | OPT_FLAG_XLATOR_OPT
7f4c2a
         },
7f4c2a
         { .key        = "features.worm",
7f4c2a
@@ -1615,15 +1615,15 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         },
7f4c2a
         { .key         = "storage.batch-fsync-mode",
7f4c2a
           .voltype     = "storage/posix",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "storage.batch-fsync-delay-usec",
7f4c2a
           .voltype     = "storage/posix",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "storage.xattr-user-namespace-mode",
7f4c2a
           .voltype     = "storage/posix",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "storage.owner-uid",
7f4c2a
           .voltype     = "storage/posix",
7f4c2a
@@ -1637,20 +1637,20 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         },
7f4c2a
         { .key         = "storage.node-uuid-pathinfo",
7f4c2a
           .voltype     = "storage/posix",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "storage.health-check-interval",
7f4c2a
           .voltype     = "storage/posix",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .option      = "update-link-count-parent",
7f4c2a
           .key         = "storage.build-pgfid",
7f4c2a
           .voltype     = "storage/posix",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "storage.bd-aio",
7f4c2a
           .voltype     = "storage/bd",
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0
7f4c2a
         },
7f4c2a
         { .key        = "config.memory-accounting",
7f4c2a
           .voltype    = "configuration",
7f4c2a
@@ -1666,43 +1666,43 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
         { .key         = GLUSTERD_QUORUM_TYPE_KEY,
7f4c2a
           .voltype     = "mgmt/glusterd",
7f4c2a
           .value       = "off",
7f4c2a
-          .op_version  = 2
7f4c2a
+          .op_version  = 1
7f4c2a
         },
7f4c2a
         { .key         = GLUSTERD_QUORUM_RATIO_KEY,
7f4c2a
           .voltype     = "mgmt/glusterd",
7f4c2a
           .value       = "0",
7f4c2a
-          .op_version  = 2
7f4c2a
+          .op_version  = 1
7f4c2a
         },
7f4c2a
         /* changelog translator - global tunables */
7f4c2a
         { .key         = "changelog.changelog",
7f4c2a
           .voltype     = "features/changelog",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "changelog.changelog-dir",
7f4c2a
           .voltype     = "features/changelog",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "changelog.encoding",
7f4c2a
           .voltype     = "features/changelog",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "changelog.rollover-time",
7f4c2a
           .voltype     = "features/changelog",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "changelog.fsync-interval",
7f4c2a
           .voltype     = "features/changelog",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = 3
7f4c2a
+          .op_version  = 2
7f4c2a
         },
7f4c2a
         { .key         = "changelog.changelog-barrier-timeout",
7f4c2a
           .voltype     = "features/changelog",
7f4c2a
           .value       = BARRIER_TIMEOUT,
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "changelog.capture-del-path",
7f4c2a
           .voltype     = "features/changelog",
7f4c2a
@@ -1713,16 +1713,16 @@ struct volopt_map_entry glusterd_volopt_map[] = {
7f4c2a
           .voltype     = "features/barrier",
7f4c2a
           .value       = "disable",
7f4c2a
           .type        = NO_DOC,
7f4c2a
-          .op_version  = GD_OP_VERSION_3_7_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "features.barrier-timeout",
7f4c2a
           .voltype     = "features/barrier",
7f4c2a
           .value       = BARRIER_TIMEOUT,
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         { .key         = "cluster.op-version",
7f4c2a
           .voltype     = "mgmt/glusterd",
7f4c2a
-          .op_version  = GD_OP_VERSION_3_6_0,
7f4c2a
+          .op_version  = GD_OP_VERSION_RHS_3_0,
7f4c2a
         },
7f4c2a
         /*Trash translator options */
7f4c2a
         { .key         = "features.trash",
7f4c2a
-- 
7f4c2a
1.7.1
7f4c2a