diff options
author | Kaushal M <kaushal@redhat.com> | 2013-04-01 17:55:30 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2013-06-05 05:24:59 -0700 |
commit | 6cedf2d7a61aa3f26522033c0fb12467b7631dbc (patch) | |
tree | c3751f8663a936b6d5d44504d41ddf43c66fc701 /xlators/mgmt/glusterd/src/glusterd-volgen.c | |
parent | 4965109a3c7d456b9f19eb67cf023ba86069e6e7 (diff) |
glusterd: Introduce volume op-versions
This is a backport of change
9153855 glusterd: Introduce volume op-versions
from master.
Each volume is now associated with two op-versions,
* op_version - the op-version of the highest op-versioned feature enabled
* client_op_version - the op-version of the highest op-versioned feature
enabled which affects the clients only.
These two op-versions are generated dynamically and kept updated during
runtime. Glusterd now uses the respective volumes' client-op-version during
getspec requests.
To achieve the above a new field in the vme table is introduced,
client_option, this boolean field tells if the option is a client side
option.
BUG: 907311
Change-Id: I59af02644a714e1c54fc89f1ead5aa551bba7ee7
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.org/4957
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-volgen.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 4a03ee4c5ad..ccfa28e3528 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -3695,3 +3695,20 @@ glusterd_get_op_version_for_key (char *key) return 0; } + +gf_boolean_t +gd_is_client_option (char *key) +{ + char *completion = NULL; + struct volopt_map_entry *vmep = NULL; + int ret = 0; + + COMPLETE_OPTION(key, completion, ret); + for (vmep = glusterd_volopt_map; vmep->key; vmep++) { + if (strcmp (vmep->key, key) == 0) { + return vmep->client_option; + } + } + + return _gf_false; +} |