You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
6.2 KiB
144 lines
6.2 KiB
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 |
|
|
|
|