summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-ganesha.c
diff options
context:
space:
mode:
authorMeghana Madhusudhan <mmadhusu@redhat.com>2015-04-20 10:41:47 +0530
committerNiels de Vos <ndevos@redhat.com>2015-05-07 02:08:43 -0700
commit4aad69a8f88acf384c812316aaa985cde2229cd7 (patch)
tree12318360918c95e89f7a40a24855e626cae0a014 /xlators/mgmt/glusterd/src/glusterd-ganesha.c
parent6d82215ab95d95ace13465a3efd384e50942ea67 (diff)
NFS-Ganesha : Locking global options file
Global option gluster features.ganesha enable writes into the global 'option' file. The snapshot feature also writes into the same file. To handle concurrent multiple transactions correctly, a new lock has to be introduced on this file. Every operation using this file needs to contest for the new lock type. This is a back-port of the patch, http://review.gluster.org/#/c/10130/ Change-Id: I1fdd285814e615a13dbf8c88ad2b7ee311247f90 BUG: 1218963 Signed-off-by: Meghana Madhusudhan <mmadhusu@redhat.com> Reviewed-on: http://review.gluster.org/10606 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Niels de Vos <ndevos@redhat.com> Tested-by: NetBSD Build System Reviewed-by: Avra Sengupta <asengupt@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-ganesha.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-ganesha.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-ganesha.c b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
index a200a64d7c6..d4ab77ca5f9 100644
--- a/xlators/mgmt/glusterd/src/glusterd-ganesha.c
+++ b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
@@ -219,17 +219,12 @@ int
glusterd_op_set_ganesha (dict_t *dict, char **errstr)
{
int ret = 0;
- int flags = 0;
- glusterd_volinfo_t *volinfo = NULL;
- char *volname = NULL;
xlator_t *this = NULL;
glusterd_conf_t *priv = NULL;
char *key = NULL;
char *value = NULL;
- char str[50] = {0, };
- int32_t dict_count = 0;
dict_t *vol_opts = NULL;
- int count = 0;
+ char *next_version = NULL;
this = THIS;
GF_ASSERT (this);
@@ -268,9 +263,17 @@ glusterd_op_set_ganesha (dict_t *dict, char **errstr)
" nfs-ganesha in dict.");
goto out;
}
-
- /* To do : Lock the global options file before writing */
- /* into this file. Bug ID : 1200254 */
+ ret = glusterd_get_next_global_opt_version_str (priv->opts,
+ &next_version);
+ if (ret) {
+ gf_log (THIS->name, GF_LOG_DEBUG, "Could not fetch "
+ " global op version");
+ goto out;
+ }
+ ret = dict_set_str (priv->opts, GLUSTERD_GLOBAL_OPT_VERSION,
+ next_version);
+ if (ret)
+ goto out;
ret = glusterd_store_options (this, priv->opts);
if (ret) {