diff options
author | Vijay Bellur <vijay@gluster.com> | 2011-06-17 07:19:10 +0000 |
---|---|---|
committer | Anand Avati <avati@gluster.com> | 2011-06-17 08:34:10 -0700 |
commit | ae6dc09a42a9392896015c7666e448a4a995843d (patch) | |
tree | d976d03098ce1055a1e35aabd5b01ae962b28433 /xlators/mgmt/glusterd/src/glusterd-utils.c | |
parent | 2b7e442245c90e4ef969591069434ac127427584 (diff) |
mgmt/glusterd: add upgrade/downgrade xlator options
Signed-off-by: shishir gowda <shishirng@gluster.com>
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Signed-off-by: Anand Avati <avati@gluster.com>
BUG: 2904 (glusterd should have upgrade/downgrade xlator options)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2904
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index db82e5ed80f..a2da435c785 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -2679,3 +2679,67 @@ glusterd_peer_destroy (glusterd_peerinfo_t *peerinfo) out: return ret; } + +int32_t +glusterd_recreate_bricks (glusterd_conf_t *conf) +{ + + glusterd_volinfo_t *volinfo = NULL; + int ret = 0; + + GF_ASSERT (conf); + list_for_each_entry (volinfo, &conf->volumes, vol_list) { + ret = generate_brick_volfiles (volinfo); + } + return ret; +} + +int32_t +glusterd_handle_upgrade_downgrade (dict_t *options, glusterd_conf_t *conf) +{ + int ret = 0; + char *type = NULL; + gf_boolean_t upgrade = _gf_false; + gf_boolean_t downgrade = _gf_false; + gf_boolean_t regenerate_brick_volfiles = _gf_false; + + ret = dict_get_str (options, "upgrade", &type); + if (!ret) { + ret = gf_string2boolean (type, &upgrade); + if (ret) { + gf_log ("glusterd", GF_LOG_ERROR, "upgrade option " + "%s is not a valid boolean type", type); + ret = -1; + goto out; + } + if (_gf_true == upgrade) + regenerate_brick_volfiles = _gf_true; + } + + ret = dict_get_str (options, "downgrade", &type); + if (!ret) { + ret = gf_string2boolean (type, &downgrade); + if (ret) { + gf_log ("glusterd", GF_LOG_ERROR, "downgrade option " + "%s is not a valid boolean type", type); + ret = -1; + goto out; + } + } + + if (upgrade && downgrade) { + gf_log ("glusterd", GF_LOG_ERROR, "Both upgrade and downgrade" + " options are set. Only one should be on"); + ret = -1; + goto out; + } + + if (!upgrade && !downgrade) + ret = 0; + if (regenerate_brick_volfiles) { + ret = glusterd_recreate_bricks (conf); + } +out: + return ret; +} + |