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 }, |