summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
authorJiffin Tony Thottan <jthottan@redhat.com>2016-11-23 16:04:26 +0530
committerKaleb KEITHLEY <kkeithle@redhat.com>2016-12-07 19:07:40 -0800
commit15e424144228d3d769f0afc7ee753ad7612c32d4 (patch)
tree33cb9d126beda52c749b0fd2cad81747da3e9718 /xlators
parent4543a68e6eb36355e37988247947494e7bcecb97 (diff)
glusterd/ganesha : handle volume reset properly for ganesha options
The "gluster volume reset" should first unexport the volume and then delete export configuration file. Also reset option is not applicable for ganesha.enable if volume value is "all". This patch also changes the name of create_export_config into manange_export_config Upstream reference : >Change-Id: Ie81a49e7d3e39a88bca9fbae5002bfda5cab34af >BUG: 1397795 >Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com> >Reviewed-on: http://review.gluster.org/15914 >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: soumya k <skoduri@redhat.com> >Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> >Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com> Change-Id: Ie81a49e7d3e39a88bca9fbae5002bfda5cab34af BUG: 1402366 Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com> Reviewed-on: http://review.gluster.org/16054 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>
Diffstat (limited to 'xlators')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-ganesha.c6
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-op-sm.c57
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.h2
3 files changed, 31 insertions, 34 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-ganesha.c b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
index 6c34de0dda4..746a3d1e364 100644
--- a/xlators/mgmt/glusterd/src/glusterd-ganesha.c
+++ b/xlators/mgmt/glusterd/src/glusterd-ganesha.c
@@ -215,7 +215,7 @@ glusterd_check_ganesha_cmd (char *key, char *value, char **errstr, dict_t *dict)
"Unable to get volume name");
goto out;
}
- ret = create_export_config (volname, "off", errstr);
+ ret = manage_export_config (volname, "off", errstr);
}
}
out:
@@ -426,7 +426,7 @@ check_host_list (void)
}
int
-create_export_config (char *volname, char *value, char **op_errstr)
+manage_export_config (char *volname, char *value, char **op_errstr)
{
runner_t runner = {0,};
int ret = -1;
@@ -527,7 +527,7 @@ ganesha_manage_export (dict_t *dict, char *value, char **op_errstr)
* is executed
* */
if (option) {
- ret = create_export_config (volname, "on", op_errstr);
+ ret = manage_export_config (volname, "on", op_errstr);
if (ret) {
gf_msg (this->name, GF_LOG_ERROR, 0,
GD_MSG_EXPORT_FILE_CREATE_FAIL,
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
index 249cda8f1f8..67bde3d2360 100644
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
@@ -1498,15 +1498,6 @@ glusterd_op_stage_reset_volume (dict_t *dict, char **op_errstr)
ret = glusterd_validate_volume_id (dict, volinfo);
if (ret)
goto out;
- ret = dict_get_str_boolean (priv->opts,
- GLUSTERD_STORE_KEY_GANESHA_GLOBAL, _gf_false);
- if (ret) {
- ret = stop_ganesha (op_errstr);
- if (ret)
- gf_msg (THIS->name, GF_LOG_WARNING, 0,
- GD_MSG_NFS_GNS_STOP_FAIL,
- "Could not stop NFS-Ganesha service");
- }
}
@@ -1516,7 +1507,23 @@ glusterd_op_stage_reset_volume (dict_t *dict, char **op_errstr)
GD_MSG_DICT_GET_FAILED, "Unable to get option key");
goto out;
}
- if (strcmp(key, "all")) {
+
+ /* *
+ * If key ganesha.enable is set, then volume should be unexported from
+ * ganesha server. Also it is a volume-level option, perform only when
+ * volume name not equal to "all"(in other words if volinfo != NULL)
+ */
+ if (volinfo && (!strcmp (key, "all") || !strcmp(key, "ganesha.enable"))) {
+ if (glusterd_check_ganesha_export (volinfo)) {
+ ret = ganesha_manage_export (dict, "off", op_errstr);
+ if (ret)
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ GD_MSG_NFS_GNS_RESET_FAIL,
+ "Could not reset ganesha.enable key");
+ }
+ }
+
+ if (strcmp(key, "all")) {
exists = glusterd_check_option_exists (key, &key_fixed);
if (exists == -1) {
ret = -1;
@@ -2053,7 +2060,6 @@ glusterd_op_reset_all_volume_options (xlator_t *this, dict_t *dict)
gf_boolean_t all = _gf_false;
char *next_version = NULL;
gf_boolean_t quorum_action = _gf_false;
- gf_boolean_t option = _gf_false;
char *op_errstr = NULL;
conf = this->private;
@@ -2083,15 +2089,6 @@ glusterd_op_reset_all_volume_options (xlator_t *this, dict_t *dict)
if (key_fixed)
key = key_fixed;
- option = dict_get_str_boolean (conf->opts, GLUSTERD_STORE_KEY_GANESHA_GLOBAL,
- _gf_false);
- if (option) {
- ret = tear_down_cluster (is_origin_glusterd (dict));
- if (ret == -1)
- gf_msg (THIS->name, GF_LOG_WARNING, errno,
- GD_MSG_DICT_GET_FAILED,
- "Could not tear down NFS-Ganesha cluster");
- }
ret = -1;
dup_opt = dict_new ();
@@ -2200,16 +2197,6 @@ glusterd_op_reset_volume (dict_t *dict, char **op_rspstr)
if (glusterd_is_quorum_changed (volinfo->dict, key, NULL))
quorum_action = _gf_true;
- ret = glusterd_check_ganesha_export (volinfo);
- if (ret) {
- ret = ganesha_manage_export (dict, "off", op_rspstr);
- if (ret) {
- gf_msg (THIS->name, GF_LOG_WARNING, 0,
- GD_MSG_NFS_GNS_RESET_FAIL,
- "Could not reset ganesha.enable key");
- ret = 0;
- }
- }
ret = glusterd_options_reset (volinfo, key, &is_force);
if (ret == -1) {
@@ -2226,6 +2213,16 @@ glusterd_op_reset_volume (dict_t *dict, char **op_rspstr)
}
}
+ if (!strcmp(key, "ganesha.enable") || !strcmp (key, "all")) {
+ if (glusterd_check_ganesha_export (volinfo)) {
+ ret = manage_export_config (volname, "off", op_rspstr);
+ if (ret)
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ GD_MSG_NFS_GNS_RESET_FAIL,
+ "Could not reset ganesha.enable key");
+ }
+ }
+
out:
GF_FREE (key_fixed);
if (quorum_action)
diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h
index 2626eb43591..20a956d9154 100644
--- a/xlators/mgmt/glusterd/src/glusterd.h
+++ b/xlators/mgmt/glusterd/src/glusterd.h
@@ -1075,7 +1075,7 @@ int glusterd_check_ganesha_cmd (char *key, char *value,
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 create_export_config (char *volname, char *value, char **op_errstr);
+int manage_export_config (char *volname, char *value, char **op_errstr);
gf_boolean_t glusterd_check_ganesha_export (glusterd_volinfo_t *volinfo);
int stop_ganesha (char **op_errstr);
int tear_down_cluster (gf_boolean_t run_teardown);