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