summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-rpc-ops.c
diff options
context:
space:
mode:
authorVishal Pandey <vpandey@redhat.com>2019-04-24 13:37:16 +0530
committerAtin Mukherjee <amukherj@redhat.com>2019-06-28 17:30:53 +0000
commit9b223b15ab69fce4076de036ee162f36a058bcd2 (patch)
treee29e9119fd8a24d5fb681d3468e9828bb20bd713 /cli/src/cli-rpc-ops.c
parent29ad22aa9482a69f3fcf04eea762e76602bbe9a0 (diff)
glusterd/thin-arbiter: Thin-arbiter integration with GD1
gluster volume create <VOLNAME> replica 2 thin-arbiter 1 <host1>:<brick1> <host2>:<brick2> <thin-arbiter-host>:<path-to-store-replica-id-file> [force] The changes have been made in a way that the last brick in the bricks list will be treated as the thin-arbiter. GD1 will be manipulated to consider replica count to be as 2 and continue creating the volume like any other replica 2 volume but since thin-arbiter volumes need ta-brick client xlator entries for each subvolume in fuse volfile, volfile generation is modified in a way to inject these entries seperately in the volfile for every subvolume. Few more additions - 1- Save the volinfo with new fields ta_bricks list and thin_arbiter_count. 2- Introduce a new option client.ta-brick-port to add remote-port to ta-brick xlator entry in fuse volfiles. The option can be set using the following CLI syntax - gluster volume set <VOLNAME> client.ta-brick-port <PORTNO.> 3- Volume Info will contain a Thin-Arbiter-path entry to distinguish from other replicate volumes. Change-Id: Ib434e2313b29716f32476c6c211d282c4ef39406 Updates #687 Signed-off-by: Vishal Pandey <vpandey@redhat.com>
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
-rw-r--r--cli/src/cli-rpc-ops.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index 16d5f73983f..35985ab44c6 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -723,10 +723,12 @@ gf_cli_get_volume_cbk(struct rpc_req *req, struct iovec *iov, int count,
int32_t redundancy_count = 0;
int32_t arbiter_count = 0;
int32_t snap_count = 0;
+ int32_t thin_arbiter_count = 0;
int32_t vol_type = 0;
int32_t transport = 0;
char *volume_id_str = NULL;
char *volname = NULL;
+ char *ta_brick = NULL;
dict_t *dict = NULL;
cli_local_t *local = NULL;
char key[1024] = {0};
@@ -903,6 +905,11 @@ xml_output:
if (ret)
goto out;
+ snprintf(key, 256, "volume%d.thin_arbiter_count", i);
+ ret = dict_get_int32(dict, key, &thin_arbiter_count);
+ if (ret)
+ goto out;
+
// Distributed (stripe/replicate/stripe-replica) setups
vol_type = get_vol_type(type, dist_count, brick_count);
@@ -929,6 +936,14 @@ xml_output:
if (ret)
goto out;
+ if (thin_arbiter_count) {
+ snprintf(key, 1024, "volume%d.thin_arbiter_brick", i);
+ ret = dict_get_str(dict, key, &ta_brick);
+ if (ret)
+ goto out;
+ cli_out("Thin-arbiter-path: %s", ta_brick);
+ }
+
snprintf(key, 256, "volume%d.opt_count", i);
ret = dict_get_int32(dict, key, &opt_count);
if (ret)