summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd
diff options
context:
space:
mode:
authorSamikshan Bairagya <samikshan@gmail.com>2017-07-18 21:33:45 +0530
committerJeff Darcy <jeff@pl.atyp.us>2017-07-19 20:17:27 +0000
commitacdbdaeba222e9ffeae077485681e5101c48d107 (patch)
treefdc658eb331a589d3f177b6468593d31e670b9f7 /xlators/mgmt/glusterd
parent33db9aff1deaa028f30516e49fdb1e8d6e31bb73 (diff)
glusterd: Set default value for cluster.max-bricks-per-process to 0
When brick-multiplexing is enabled, and "cluster.max-bricks-per-process" isn't explicitly set, multiplexing happens without any limit set. But the default value set for that tunable is 1, which is confusing. This commit sets the default value to 0, and prevents the user from being able to set this value to 1 when brick-multiplexing is enbaled. The default value of 0 denotes that brick-multiplexing can happen without any limit on the number of bricks per process. Change-Id: I4647f7bf5837d520075dc5c19a6e75bc1bba258b BUG: 1472417 Signed-off-by: Samikshan Bairagya <samikshan@gmail.com> Reviewed-on: https://review.gluster.org/17819 Smoke: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Atin Mukherjee <amukherj@redhat.com> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/mgmt/glusterd')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-op-sm.c6
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c21
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-volume-set.c19
3 files changed, 31 insertions, 15 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
index 0ac64858c11..6be92d8ad7e 100644
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
@@ -79,10 +79,12 @@ glusterd_all_vol_opts valid_all_vol_opts[] = {
*/
{ GLUSTERD_MAX_OP_VERSION_KEY, "BUG_NO_MAX_OP_VERSION"},
{ GLUSTERD_BRICK_MULTIPLEX_KEY, "disable"},
- /* Set this value to 1 by default implying non-multiplexed behaviour.
+ /* Set this value to 0 by default implying brick-multiplexing
+ * behaviour with no limit set on the number of brick instances that
+ * can be attached per process.
* TBD: Discuss the default value for this. Maybe this should be a
* dynamic value depending on the memory specifications per node */
- { GLUSTERD_BRICKMUX_LIMIT_KEY, "1"},
+ { GLUSTERD_BRICKMUX_LIMIT_KEY, "0"},
{ NULL },
};
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index 5edf9805f9c..78df55551aa 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -122,7 +122,7 @@ get_mux_limit_per_process (int *mux_limit)
{
char *value = NULL;
int ret = -1;
- int max_bricks_per_proc = -1;
+ int max_bricks_per_proc = 0;
xlator_t *this = NULL;
glusterd_conf_t *priv = NULL;
@@ -140,15 +140,18 @@ get_mux_limit_per_process (int *mux_limit)
ret = dict_get_str (priv->opts, GLUSTERD_BRICKMUX_LIMIT_KEY, &value);
if (ret) {
- gf_msg (this->name, GF_LOG_ERROR, 0, GD_MSG_DICT_GET_FAILED,
- "Can't get limit for number of bricks per brick "
- "process from dict");
+ gf_msg_debug (this->name, 0, "Limit for number of bricks per "
+ "brick process not yet set in dict. Returning "
+ "limit as 0 denoting that multiplexing can "
+ "happen with no limit set.");
ret = 0;
- } else {
- ret = gf_string2int (value, &max_bricks_per_proc);
- if (ret)
- goto out;
+ goto out;
}
+
+ ret = gf_string2int (value, &max_bricks_per_proc);
+ if (ret)
+ goto out;
+
out:
*mux_limit = max_bricks_per_proc;
@@ -5497,7 +5500,7 @@ find_compat_brick_in_vol (glusterd_conf_t *conf,
continue;
}
- if (mux_limit != -1) {
+ if (mux_limit != 0) {
if (brick_proc->brick_count >= mux_limit)
continue;
} else {
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c
index 5ef86f764f4..4c07d3118af 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c
@@ -1027,6 +1027,14 @@ validate_mux_limit (glusterd_volinfo_t *volinfo, dict_t *dict, char *key,
gf_msg (this->name, GF_LOG_ERROR, 0,
GD_MSG_INVALID_ENTRY, "%s", *op_errstr);
}
+
+ if (val == 1) {
+ gf_asprintf (op_errstr, "Brick-multiplexing is enabled. "
+ "Please set this option to a value other than 1 "
+ "to make use of the brick-multiplexing feature.");
+ ret = -1;
+ goto out;
+ }
out:
gf_msg_debug ("glusterd", 0, "Returning %d", ret);
@@ -3452,14 +3460,17 @@ struct volopt_map_entry glusterd_volopt_map[] = {
},
{ .key = GLUSTERD_BRICKMUX_LIMIT_KEY,
.voltype = "mgmt/glusterd",
- .value = "1",
+ .value = "0",
.op_version = GD_OP_VERSION_3_12_0,
.validate_fn = validate_mux_limit,
.type = GLOBAL_DOC,
.description = "This option can be used to limit the number of brick "
- "instances per brick process when brick multiplexing "
- "is enabled. This option can be set only when brick "
- "multiplexing feature enabled."
+ "instances per brick process when brick-multiplexing "
+ "is enabled. If not explicitly set, this tunable is "
+ "set to 0 which denotes that brick-multiplexing can "
+ "happen without any limit on the number of bricks per "
+ "process. Also this option can't be set when the "
+ "brick-multiplexing feature is disabled."
},
{ .key = "disperse.optimistic-change-log",
.voltype = "cluster/disperse",