diff options
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-brick-ops.c | 39 | 
1 files changed, 25 insertions, 14 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c index 4bb6c5115a7..72418684649 100644 --- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c @@ -684,10 +684,33 @@ glusterd_handle_remove_brick (rpcsvc_request_t *req)                  goto out;  	} +	if (!replica_count && +            (volinfo->type == GF_CLUSTER_TYPE_STRIPE_REPLICATE) && +            (volinfo->brick_count == volinfo->dist_leaf_count)) { +                snprintf (err_str, 2048, +                          "Removing bricks from stripe-replicate" +                          " configuration is not allowed without reducing " +                          "replica or stripe count explicitly."); +                gf_log (THIS->name, GF_LOG_ERROR, "%s", err_str); +                ret = -1; +                goto out; +        } + +	if (!replica_count && +            (volinfo->type == GF_CLUSTER_TYPE_REPLICATE) && +            (volinfo->brick_count == volinfo->dist_leaf_count)) { +                snprintf (err_str, 2048, +                          "Removing bricks from replicate configuration " +                          "is not allowed without reducing replica count " +                          "explicitly."); +                gf_log (THIS->name, GF_LOG_ERROR, "%s", err_str); +                ret = -1; +                goto out; +        } +  	/* Do not allow remove-brick if the bricks given is less than             the replica count or stripe count */ -        if (!replica_count && (volinfo->type != GF_CLUSTER_TYPE_NONE) && -            !(volinfo->brick_count <= volinfo->dist_leaf_count)) { +        if (!replica_count && (volinfo->type != GF_CLUSTER_TYPE_NONE)) {                  if (volinfo->dist_leaf_count &&                      (count % volinfo->dist_leaf_count)) {                          snprintf (err_str, 2048, "Remove brick incorrect" @@ -699,18 +722,6 @@ glusterd_handle_remove_brick (rpcsvc_request_t *req)                  }          } -	if (!replica_count && -            (volinfo->type == GF_CLUSTER_TYPE_STRIPE_REPLICATE) && -            (volinfo->brick_count == volinfo->dist_leaf_count)) { -                snprintf (err_str, 2048, -                          "Removing bricks from stripe-replicate" -                          " configuration is not allowed without reducing " -                          "replica or stripe count explicitly."); -                gf_log (THIS->name, GF_LOG_ERROR, "%s", err_str); -                ret = -1; -                goto out; -        } -          brick_list = GF_MALLOC (120000 * sizeof(*brick_list),gf_common_mt_char);          if (!brick_list) {  | 
