diff options
author | Ravishankar N <ravishankar@redhat.com> | 2016-04-29 17:41:18 +0530 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2016-05-19 09:40:04 -0700 |
commit | 61c1b2cee973b11897a37d508910012e616033bc (patch) | |
tree | fbaf9adc16738884c9c073677ac01704f8f6f560 /xlators/mgmt/glusterd/src/glusterd-volgen.c | |
parent | 6f1a71210ee0a0f3741b5ece3b5240c1e4b5fa6d (diff) |
cli/glusterd: add/remove brick fixes for arbiter volumes
1.Provide a command to convert replica 2 volumes to arbiter volumes.
Existing self-heal logic will automatically heal the file hierarchy into
the arbiter brick, the progress of which can be monitored using the
heal info command.
Syntax: gluster volume add-brick <VOLNAME> replica 3 arbiter 1
<HOST:arbiter-brick-path>
2. Add checks when removing bricks from arbiter volumes:
- When converting from arbiter to replica 2 volume, allow only arbiter
brick to be removed.
- When converting from arbiter to plain distribute volume, allow only if
arbiter is one of the bricks that is removed.
3. Some clean-up:
- Use GD_MSG_DICT_GET_SUCCESS instead of GD_MSG_DICT_GET_FAILED to
log messages that are not failures.
- Remove unused variable `brick_list`
- Move 'brickinfo->group' related functions to glusted-utils.
Change-Id: Ic87b8c7e4d7d3ab03f93e7b9f372b314d80947ce
BUG: 1318289
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-on: http://review.gluster.org/14126
Smoke: Gluster Build System <jenkins@build.gluster.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-volgen.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 41 |
1 files changed, 6 insertions, 35 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 4321ddb7ddb..231117750f6 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -1547,16 +1547,8 @@ brick_graph_add_arbiter (volgen_graph_t *graph, glusterd_volinfo_t *volinfo, if (volinfo->arbiter_count != 1) return 0; - /* Find the last brick in the same group. */ - last = brickinfo; - for (;;) { - next = list_next (last, &volinfo->bricks, - glusterd_brickinfo_t, brick_list); - if (!next || (next->group != brickinfo->group)) { - break; - } - last = next; - } + /* Add arbiter only if it is the last (i.e. 3rd) brick. */ + last = get_last_brick_of_brick_group (volinfo, brickinfo); if (last != brickinfo) return 0; @@ -1623,22 +1615,6 @@ out: return ret; } -void -assign_brick_groups (glusterd_volinfo_t *volinfo) -{ - glusterd_brickinfo_t *brickinfo = NULL; - uint16_t group_num = 0; - int in_group = 0; - - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { - brickinfo->group = group_num; - if (++in_group >= volinfo->replica_count) { - in_group = 0; - ++group_num; - } - } -} - static int brick_graph_add_changelog (volgen_graph_t *graph, glusterd_volinfo_t *volinfo, dict_t *set_dict, glusterd_brickinfo_t *brickinfo) @@ -5304,23 +5280,18 @@ get_parent_vol_tstamp_file (char *filename, glusterd_volinfo_t *volinfo) } void -assign_groups (glusterd_volinfo_t *volinfo) +assign_jbr_uuids (glusterd_volinfo_t *volinfo) { glusterd_brickinfo_t *brickinfo = NULL; - uint16_t group_num = 0; int in_group = 0; uuid_t tmp_uuid; list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { - if (in_group == 0) { + if (in_group == 0) gf_uuid_generate(tmp_uuid); - } - brickinfo->group = group_num; gf_uuid_copy(brickinfo->jbr_uuid, tmp_uuid); - if (++in_group >= volinfo->replica_count) { + if (++in_group >= volinfo->replica_count) in_group = 0; - ++group_num; - } } } @@ -5393,7 +5364,7 @@ generate_brick_volfiles (glusterd_volinfo_t *volinfo) } if (glusterd_volinfo_get_boolean(volinfo, "cluster.jbr") > 0) { - assign_groups(volinfo); + assign_jbr_uuids(volinfo); } ret = glusterd_volume_brick_for_each (volinfo, NULL, |