diff options
author | Samikshan Bairagya <samikshan@gmail.com> | 2017-07-18 21:33:45 +0530 |
---|---|---|
committer | Jeff Darcy <jeff@pl.atyp.us> | 2017-07-19 20:17:27 +0000 |
commit | acdbdaeba222e9ffeae077485681e5101c48d107 (patch) | |
tree | fdc658eb331a589d3f177b6468593d31e670b9f7 | |
parent | 33db9aff1deaa028f30516e49fdb1e8d6e31bb73 (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>
-rw-r--r-- | tests/basic/mpx-compat.t | 1 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 6 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 21 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-set.c | 19 |
4 files changed, 32 insertions, 15 deletions
diff --git a/tests/basic/mpx-compat.t b/tests/basic/mpx-compat.t index 3de0f6fe7cb..4ca262ee349 100644 --- a/tests/basic/mpx-compat.t +++ b/tests/basic/mpx-compat.t @@ -15,6 +15,7 @@ function count_processes { pgrep glusterfsd | wc -w } +cleanup TEST glusterd TEST $CLI volume set all cluster.brick-multiplex yes push_trapfunc "$CLI volume set all cluster.brick-multiplex off" 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", |