From efd88ab25c2a9ebb16da2200c5335e7b7c24f83e Mon Sep 17 00:00:00 2001 From: Meghana M 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 Reviewed-on: https://code.engineering.redhat.com/gerrit/55401 Reviewed-by: Jiffin Thottan Reviewed-by: Kaleb Keithley Tested-by: Kaleb Keithley --- 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