diff options
-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", |