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