diff options
| -rw-r--r-- | xlators/cluster/afr/src/afr.c | 27 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 1 | 
2 files changed, 28 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c index ebb9f1ee904..cd84c357da8 100644 --- a/xlators/cluster/afr/src/afr.c +++ b/xlators/cluster/afr/src/afr.c @@ -107,6 +107,7 @@ reconfigure (xlator_t *this, dict_t *options)  {          afr_private_t *priv        = NULL;          xlator_t      *read_subvol = NULL; +        int            read_subvol_index = -1;          int            ret         = -1;          int            index       = -1;          char          *qtype       = NULL; @@ -162,6 +163,18 @@ reconfigure (xlator_t *this, dict_t *options)                  priv->read_child = index;          } +        GF_OPTION_RECONF ("read-subvolume-index",read_subvol_index, options,int32,out); + +        if (read_subvol_index >-1) { +                index=read_subvol_index; +                if (index >= priv->child_count) { +                        gf_log (this->name, GF_LOG_ERROR, "%d not a subvolume-index", +                                index); +                        goto out; +                } +                priv->read_child = index; +        } +          GF_OPTION_RECONF ("eager-lock", priv->eager_lock, options, bool, out);          GF_OPTION_RECONF ("quorum-type", qtype, options, str, out);          GF_OPTION_RECONF ("quorum-count", priv->quorum_count, options, @@ -199,6 +212,7 @@ init (xlator_t *this)          int            ret         = -1;          GF_UNUSED int  op_errno    = 0;          xlator_t      *read_subvol = NULL; +        int            read_subvol_index = -1;          xlator_t      *fav_child   = NULL;          char          *qtype       = NULL; @@ -241,6 +255,15 @@ init (xlator_t *this)                          goto out;                  }          } +        GF_OPTION_INIT ("read-subvolume-index",read_subvol_index,int32,out); +        if (read_subvol_index > -1) { +                if (read_subvol_index >= priv->child_count) { +                        gf_log (this->name, GF_LOG_ERROR, "%d not a subvolume-index", +                                read_subvol_index); +                        goto out; +                } +                priv->read_child = read_subvol_index; +        }          GF_OPTION_INIT ("choose-local", priv->choose_local, bool, out);          GF_OPTION_INIT ("read-hash-mode", priv->hash_mode, uint32, out); @@ -502,6 +525,10 @@ struct volume_options options[] = {          { .key  = {"read-subvolume" },            .type = GF_OPTION_TYPE_XLATOR          }, +        { .key  = {"read-subvolume-index" }, +          .type = GF_OPTION_TYPE_INT, +          .default_value = "-1", +        },          { .key = {"read-hash-mode" },            .type = GF_OPTION_TYPE_INT,            .min = 0, diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 7745f940c9f..c7924e5c289 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -123,6 +123,7 @@ static struct volopt_map_entry glusterd_volopt_map[] = {          {"cluster.entry-change-log",             "cluster/replicate",  NULL, NULL, NO_DOC, 0     },          {"cluster.read-subvolume",               "cluster/replicate",  NULL, NULL, NO_DOC, 0    }, +        {"cluster.read-subvolume-index",               "cluster/replicate",  NULL, NULL, NO_DOC, 0    },          {"cluster.read-hash-mode",               "cluster/replicate",  NULL, NULL, NO_DOC, 0},          {"cluster.background-self-heal-count",   "cluster/replicate",  NULL, NULL, NO_DOC, 0    },          {"cluster.metadata-self-heal",           "cluster/replicate",  NULL, NULL, NO_DOC, 0     },  | 
