From 613a6369d63e3ec87735a5427e4e87894f884749 Mon Sep 17 00:00:00 2001 From: Raghavendra Bhat Date: Mon, 11 Apr 2011 03:13:34 +0000 Subject: mgmt/glusterd: allow add brick in pure replicate setup Currently in pure replicate if the replica count is 4 and there are 4 bricks, then suppose 3 bricks are removed then add brick works only if 3 bricks are provided. Providing lesser bricks fails. This patch fixes that scenario. Signed-off-by: Raghavendra Bhat Signed-off-by: Pranith Kumar K Signed-off-by: Anand Avati BUG: 1574 ([glusterfs-3.1.0qa18]: add-brick to a replicate volume fails if a brick is removed) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1574 --- xlators/mgmt/glusterd/src/glusterd-handler.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'xlators/mgmt') diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 8acd85cc378..1cc27d925ef 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -1276,6 +1276,7 @@ glusterd_handle_add_brick (rpcsvc_request_t *req) glusterd_volinfo_t tmpvolinfo = {{0},}; int lock_fail = 0; glusterd_op_t cli_op = GD_OP_ADD_BRICK; + int total_bricks = 0; this = THIS; GF_ASSERT(this); @@ -1357,11 +1358,13 @@ glusterd_handle_add_brick (rpcsvc_request_t *req) if (!brick_count || !volinfo->sub_count) goto brick_val; + total_bricks = volinfo->brick_count + brick_count; /* If the brick count is less than sub_count then, allow add-brick only for plain replicate volume since in plain stripe brick_count becoming less than the sub_count is not allowed */ - if (volinfo->brick_count < volinfo->sub_count && (volinfo->type == GF_CLUSTER_TYPE_REPLICATE) ) { - if ((volinfo->sub_count - volinfo->brick_count) == brick_count) + if (volinfo->brick_count < volinfo->sub_count && + (volinfo->type == GF_CLUSTER_TYPE_REPLICATE)) { + if (total_bricks <= volinfo->sub_count) goto brick_val; } -- cgit