diff options
author | Kaushal M <kaushal@redhat.com> | 2014-05-12 11:22:36 +0530 |
---|---|---|
committer | Krishnan Parthasarathi <kparthas@redhat.com> | 2014-05-14 03:14:33 -0700 |
commit | bfde478cedda8267134ee3807c8db5e042115eae (patch) | |
tree | 580fde93def7ad60bfb29017b5bd91ad67db9729 /xlators/mgmt/glusterd/src/glusterd-utils.c | |
parent | 5c65850c99829668ac199a49a0760443db74b581 (diff) | |
download | glusterfs-bfde478cedda8267134ee3807c8db5e042115eae.tar.gz glusterfs-bfde478cedda8267134ee3807c8db5e042115eae.tar.xz glusterfs-bfde478cedda8267134ee3807c8db5e042115eae.zip |
glusterd: Allow setting volume options by default based on op-version
A new function glusterd_enable_default_options is introduced, which will
set some volume options on a volume based on op-version. This function
is called near the end of the volume create and will allow some options
to be enabled based on op-version on newly created volumes. This will
also be called during volume reset, to reset the options to their
default values if they had changed.
Change-Id: I91057d9e42409b17a884728b43ae3721328d4831
BUG: 1096616
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.org/7734
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 32761d8fe8..9923ffd061 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -12797,3 +12797,52 @@ glusterd_launch_synctask (synctask_fn_t fn, void *opaque) " and other volume related services"); } +/* + * glusterd_enable_default_options enable certain options by default on the + * given volume based on the cluster op-version. This is called only during + * volume create or during volume reset + * + * @volinfo - volume on which to enable the default options + * @option - option to be set to default. If NULL, all possible options will be + * set to default + * + * Returns 0 on sucess and -1 on failure. If @option is given, but doesn't match + * any of the options that could be set, it is a success. + */ +/* + * TODO: Make this able to parse the volume-set table to set options + * Currently, the check and set for any option which wants to make use of this + * 'framework' needs to be done here manually. This would mean more work for the + * developer. This little extra work can be avoided if we make it possible to + * parse the volume-set table to get the options which could be set and their + * default values + */ +int +glusterd_enable_default_options (glusterd_volinfo_t *volinfo, char *option) +{ + int ret = 0; + xlator_t *this = NULL; + glusterd_conf_t *conf = NULL; + + this = THIS; + GF_ASSERT (this); + + GF_VALIDATE_OR_GOTO (this->name, volinfo, out); + + conf = this->private; + GF_ASSERT (conf); + + if (conf->op_version >= 4) { + /* Set needed volume options in volinfo->dict + * For ex., + * + * if (!option || !strcmp("someoption", option) { + * ret = dict_set_str(volinfo->dict, "someoption", "on"); + * ... + * } + * */ + + } +out: + return ret; +} |