summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiffin Tony Thottan <jthottan@redhat.com>2017-04-25 16:36:40 +0530
committerRaghavendra Talur <rtalur@redhat.com>2017-05-01 10:07:25 +0000
commit657a82ca1475a7325b90022957bb880429dcf939 (patch)
treee103f36cf14dddf802df37e8d47a8e934a2b4e3d
parent0a98c72dc0a6a00161bdc0a714e52e648b69cf24 (diff)
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. Change-Id: Iea9c62e5cda4f54805b41ea6055cf0c3652a634c BUG: 1445260 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>
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-ganesha.c30
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-op-sm.c4
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-volume-ops.c2
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.h3
4 files changed, 22 insertions, 17 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-ganesha.c b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
index f709469b36d..32388056314 100644
--- a/xlators/mgmt/glusterd/src/glusterd-ganesha.c
+++ b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
@@ -463,7 +463,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,};
int ret = -1;
@@ -573,17 +574,20 @@ 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;
@@ -858,7 +862,7 @@ glusterd_handle_ganesha_op (dict_t *dict, char **op_errstr,
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 beee0fdc908..b4846f2c317 100644
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
@@ -1069,7 +1069,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;
}
@@ -1512,7 +1512,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,
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
index 778579b4440..a2495602cff 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
@@ -1735,7 +1735,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, "Could not "
diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h
index b99d433db74..9b70db2d60b 100644
--- a/xlators/mgmt/glusterd/src/glusterd.h
+++ b/xlators/mgmt/glusterd/src/glusterd.h
@@ -1118,7 +1118,8 @@ int glusterd_check_ganesha_cmd (char *key, char *value,
char **errstr, dict_t *dict);
int 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);
+int ganesha_manage_export (dict_t *dict, char *value,
+ gf_boolean_t update_cache_invalidation, char **op_errstr);
int manage_export_config (char *volname, char *value, char **op_errstr);
gf_boolean_t