diff options
| author | Vishal Pandey <vpandey@redhat.com> | 2019-04-24 13:37:16 +0530 | 
|---|---|---|
| committer | Vishal Pandey <vpandey-RH@review.gluster.org> | 2019-07-04 07:42:11 +0000 | 
| commit | 08c87ae4208b73f4f183f7b54ebcb373e8bc0ede (patch) | |
| tree | 59d8e759a64913d7506dd98f6343fc0abe1fe801 /cli/src/cli-rpc-ops.c | |
| parent | 96702cfea3ba55121c3bf203fcf2b86c803e1f04 (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>
(cherry picked from commit 9b223b15ab69fce4076de036ee162f36a058bcd2)
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
| -rw-r--r-- | cli/src/cli-rpc-ops.c | 15 | 
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)  | 
