summaryrefslogtreecommitdiff
path: root/0063-glusterd-ganesha-update-cache-invalidation-properly-.patch
diff options
context:
space:
mode:
Diffstat (limited to '0063-glusterd-ganesha-update-cache-invalidation-properly-.patch')
-rw-r--r--0063-glusterd-ganesha-update-cache-invalidation-properly-.patch144
1 files changed, 144 insertions, 0 deletions
diff --git a/0063-glusterd-ganesha-update-cache-invalidation-properly-.patch b/0063-glusterd-ganesha-update-cache-invalidation-properly-.patch
new file mode 100644
index 0000000..7bbd920
--- /dev/null
+++ b/0063-glusterd-ganesha-update-cache-invalidation-properly-.patch
@@ -0,0 +1,144 @@
+From e5450c639915f4c29ae2ad480e4128b5845254cc Mon Sep 17 00:00:00 2001
+From: Jiffin Tony Thottan <jthottan@redhat.com>
+Date: Tue, 25 Apr 2017 16:36:40 +0530
+Subject: [PATCH 063/124] glusterd/ganesha : update cache invalidation properly
+ during volume stop
+
+As per current code, during volume stop for ganesha enabled volume the
+feature.cache-invalidation was turned "off" in ganesha_manage_export().
+And it never turn back to "on" when volume is started. It is not desire
+to modify the volume options during stop, this patch fixes above mentioned
+issue.
+
+Label: DOWNSTREAM ONLY
+
+Change-Id: Iea9c62e5cda4f54805b41ea6055cf0c3652a634c
+Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
+Reviewed-on: https://review.gluster.org/17111
+Smoke: Gluster Build System <jenkins@build.gluster.org>
+NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
+CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
+Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
+Reviewed-by: Raghavendra Talur <rtalur@redhat.com>
+Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
+Reviewed-on: https://code.engineering.redhat.com/gerrit/167148
+Reviewed-by: Soumya Koduri <skoduri@redhat.com>
+Tested-by: RHGS Build Bot <nigelb@redhat.com>
+Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
+---
+ xlators/mgmt/glusterd/src/glusterd-ganesha.c | 33 ++++++++++++++-----------
+ xlators/mgmt/glusterd/src/glusterd-op-sm.c | 4 +--
+ xlators/mgmt/glusterd/src/glusterd-volume-ops.c | 2 +-
+ xlators/mgmt/glusterd/src/glusterd.h | 3 ++-
+ 4 files changed, 23 insertions(+), 19 deletions(-)
+
+diff --git a/xlators/mgmt/glusterd/src/glusterd-ganesha.c b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
+index b743216..1c2ba7a 100644
+--- a/xlators/mgmt/glusterd/src/glusterd-ganesha.c
++++ b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
+@@ -445,7 +445,8 @@ manage_export_config(char *volname, char *value, char **op_errstr)
+
+ /* Exports and unexports a particular volume via NFS-Ganesha */
+ int
+-ganesha_manage_export(dict_t *dict, char *value, char **op_errstr)
++ganesha_manage_export(dict_t *dict, char *value,
++ gf_boolean_t update_cache_invalidation, char **op_errstr)
+ {
+ runner_t runner = {
+ 0,
+@@ -558,19 +559,21 @@ ganesha_manage_export(dict_t *dict, char *value, char **op_errstr)
+ }
+ }
+
+- vol_opts = volinfo->dict;
+- ret = dict_set_dynstr_with_alloc(vol_opts, "features.cache-invalidation",
+- value);
+- if (ret)
+- gf_asprintf(op_errstr,
+- "Cache-invalidation could not"
+- " be set to %s.",
+- value);
+- ret = glusterd_store_volinfo(volinfo, GLUSTERD_VOLINFO_VER_AC_INCREMENT);
+- if (ret)
+- gf_asprintf(op_errstr, "failed to store volinfo for %s",
+- volinfo->volname);
+-
++ if (update_cache_invalidation) {
++ vol_opts = volinfo->dict;
++ ret = dict_set_dynstr_with_alloc(vol_opts,
++ "features.cache-invalidation", value);
++ if (ret)
++ gf_asprintf(op_errstr,
++ "Cache-invalidation could not"
++ " be set to %s.",
++ value);
++ ret = glusterd_store_volinfo(volinfo,
++ GLUSTERD_VOLINFO_VER_AC_INCREMENT);
++ if (ret)
++ gf_asprintf(op_errstr, "failed to store volinfo for %s",
++ volinfo->volname);
++ }
+ out:
+ return ret;
+ }
+@@ -867,7 +870,7 @@ glusterd_handle_ganesha_op(dict_t *dict, char **op_errstr, char *key,
+ GF_ASSERT(value);
+
+ if (strcmp(key, "ganesha.enable") == 0) {
+- ret = ganesha_manage_export(dict, value, op_errstr);
++ ret = ganesha_manage_export(dict, value, _gf_true, op_errstr);
+ if (ret < 0)
+ goto out;
+ }
+diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+index a630c48..52809a8 100644
+--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
++++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+@@ -1178,7 +1178,7 @@ glusterd_op_stage_set_volume(dict_t *dict, char **op_errstr)
+
+ if ((strcmp(key, "ganesha.enable") == 0) &&
+ (strcmp(value, "off") == 0)) {
+- ret = ganesha_manage_export(dict, "off", op_errstr);
++ ret = ganesha_manage_export(dict, "off", _gf_true, op_errstr);
+ if (ret)
+ goto out;
+ }
+@@ -1691,7 +1691,7 @@ glusterd_op_stage_reset_volume(dict_t *dict, char **op_errstr)
+ */
+ if (volinfo && (!strcmp(key, "all") || !strcmp(key, "ganesha.enable"))) {
+ if (glusterd_check_ganesha_export(volinfo)) {
+- ret = ganesha_manage_export(dict, "off", op_errstr);
++ ret = ganesha_manage_export(dict, "off", _gf_true, op_errstr);
+ if (ret)
+ gf_msg(this->name, GF_LOG_WARNING, 0, GD_MSG_NFS_GNS_RESET_FAIL,
+ "Could not reset ganesha.enable key");
+diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
+index 81c668c..de4eccb 100644
+--- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
++++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
+@@ -1825,7 +1825,7 @@ glusterd_op_stage_stop_volume(dict_t *dict, char **op_errstr)
+
+ ret = glusterd_check_ganesha_export(volinfo);
+ if (ret) {
+- ret = ganesha_manage_export(dict, "off", op_errstr);
++ ret = ganesha_manage_export(dict, "off", _gf_false, op_errstr);
+ if (ret) {
+ gf_msg(THIS->name, GF_LOG_WARNING, 0,
+ GD_MSG_NFS_GNS_UNEXPRT_VOL_FAIL,
+diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h
+index 5135181..e858ce4 100644
+--- a/xlators/mgmt/glusterd/src/glusterd.h
++++ b/xlators/mgmt/glusterd/src/glusterd.h
+@@ -1368,7 +1368,8 @@ glusterd_op_stage_set_ganesha(dict_t *dict, char **op_errstr);
+ int
+ glusterd_op_set_ganesha(dict_t *dict, char **errstr);
+ int
+-ganesha_manage_export(dict_t *dict, char *value, char **op_errstr);
++ganesha_manage_export(dict_t *dict, char *value,
++ gf_boolean_t update_cache_invalidation, char **op_errstr);
+ gf_boolean_t
+ glusterd_is_ganesha_cluster();
+ gf_boolean_t
+--
+1.8.3.1
+