From efd88ab25c2a9ebb16da2200c5335e7b7c24f83e Mon Sep 17 00:00:00 2001
From: Meghana M <mmadhusu@redhat.com>
Date: Mon, 3 Aug 2015 03:03:07 +0530
Subject: [PATCH 278/279] Set nfs.disable to "on" when global NFS-Ganesha key is enabled
"nfs.disable" gets set to "on" for all the existing volumes,
when the command "gluster nfs-ganesha enable" is executed.
When a new volume is created,it gets exported via Gluster-NFS on
the nodes outside the NFS-Ganesha. To fix this,
the "nfs.disable" key is set to "on" before starting the volume,
whenever the global option is set to "enable".
This patch is a backport of the fix upstream,
http://review.gluster.org/#/c/11871/
Change-Id: I5581d64d785ad3eb526c575dbafcf9044c76e593
BUG: 1226817
Signed-off-by: Meghana Madhusudhan <mmadhusu@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/55401
Reviewed-by: Jiffin Thottan <jthottan@redhat.com>
Reviewed-by: Kaleb Keithley <kkeithle@redhat.com>
Tested-by: Kaleb Keithley <kkeithle@redhat.com>
---
xlators/mgmt/glusterd/src/glusterd-volume-ops.c | 24 +++++++++++++++++++++++
1 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
index b52f832..d2716f8 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
@@ -2377,6 +2377,8 @@ glusterd_op_start_volume (dict_t *dict, char **op_errstr)
char *brick_mount_dir = NULL;
char key[PATH_MAX] = "";
char *volname = NULL;
+ char *str = NULL;
+ gf_boolean_t option = _gf_false;
int flags = 0;
glusterd_volinfo_t *volinfo = NULL;
glusterd_brickinfo_t *brickinfo = NULL;
@@ -2430,6 +2432,28 @@ glusterd_op_start_volume (dict_t *dict, char **op_errstr)
}
}
+ ret = dict_get_str (conf->opts, GLUSTERD_STORE_KEY_GANESHA_GLOBAL, &str);
+ if (ret == -1) {
+ gf_msg (this->name, GF_LOG_INFO, 0,
+ GD_MSG_DICT_GET_FAILED, "Global dict not present.");
+ ret = 0;
+
+ } else {
+ ret = gf_string2boolean (str, &option);
+ /* Check if the feature is enabled and set nfs-disable to true */
+ if (option) {
+ gf_msg_debug (this->name, 0, "NFS-Ganesha is enabled");
+ /* Gluster-nfs should not start when NFS-Ganesha is enabled*/
+ ret = dict_set_str (volinfo->dict, "nfs.disable", "on");
+ if (ret) {
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ GD_MSG_DICT_SET_FAILED, "Failed to set nfs.disable for"
+ "volume %s", volname);
+ goto out;
+ }
+ }
+ }
+
ret = glusterd_start_volume (volinfo, flags, _gf_true);
if (ret)
goto out;
--
1.7.1