summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/basic/mpx-compat.t1
-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
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",