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