diff options
-rw-r--r-- | extras/hook-scripts/reset/post/Makefile.am | 5 | ||||
-rwxr-xr-x | extras/hook-scripts/reset/post/S31ganesha-reset.sh | 48 | ||||
-rw-r--r-- | glusterfs.spec.in | 4 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-ganesha.c | 6 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 57 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.h | 2 |
6 files changed, 35 insertions, 87 deletions
diff --git a/extras/hook-scripts/reset/post/Makefile.am b/extras/hook-scripts/reset/post/Makefile.am index bb28d990596..1b336ac1a85 100644 --- a/extras/hook-scripts/reset/post/Makefile.am +++ b/extras/hook-scripts/reset/post/Makefile.am @@ -1,4 +1 @@ -EXTRA_DIST = S31ganesha-reset.sh - -hookdir = $(GLUSTERD_WORKDIR)/hooks/1/reset/post/ -hook_SCRIPTS = S31ganesha-reset.sh +EXTRA_DIST = diff --git a/extras/hook-scripts/reset/post/S31ganesha-reset.sh b/extras/hook-scripts/reset/post/S31ganesha-reset.sh deleted file mode 100755 index 9538911a842..00000000000 --- a/extras/hook-scripts/reset/post/S31ganesha-reset.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash - -PROGNAME="Sganesha-reset" -OPTSPEC="volname:,gd-workdir:" -VOL= -GLUSTERD_WORKDIR= - -function parse_args () { - ARGS=$(getopt -l $OPTSPEC -o "o" -name $PROGNAME $@) - eval set -- "$ARGS" - while true; do - case $1 in - --volname) - shift - VOL=$1 - ;; - --gd-workdir) - shift - GLUSTERD_WORKDIR=$1 - ;; - *) - shift - break - ;; - esac - shift - done -} - -function is_volume_started () { - volname=$1 - echo "$(grep status $GLUSTERD_WORKDIR/vols/"$volname"/info |\ - cut -d"=" -f2)" -} - -parse_args $@ -if ps aux | grep -q "[g]anesha.nfsd" - then - kill -s TERM `cat /var/run/ganesha.pid` - sleep 10 - rm -rf /var/lib/glusterfs-ganesha/exports - rm -rf /var/lib/glusterfs-ganesha/.export_added - sed -i /conf/d /var/lib/ganesha/nfs-ganesha.conf - if [ "1" = $(is_volume_started "$VOL") ]; - then - gluster volume start $VOL force - fi -fi diff --git a/glusterfs.spec.in b/glusterfs.spec.in index afaf3b0958c..a142fca512f 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -1058,7 +1058,6 @@ exit 0 %{_libexecdir}/ganesha/* %{_prefix}/lib/ocf/resource.d/heartbeat/* %{_sharedstatedir}/glusterd/hooks/1/start/post/S31ganesha-start.sh -%{_sharedstatedir}/glusterd/hooks/1/reset/post/S31ganesha-reset.sh %if ( 0%{!?_without_georeplication:1} ) %files geo-replication @@ -1272,6 +1271,9 @@ exit 0 %endif %changelog +* Thu Nov 24 2016 Jiffin Tony Thottan <jhottan@redhat.com> +- remove S31ganesha-reset.sh from hooks (#1397795) + * Thu Sep 22 2016 Kaleb S. KEITHLEY <kkeithle@redhat.com> - python-ctypes no long exists, now in python stdlib (#1378436) 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 b2dfcb27f5b..3d9372a5357 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -1499,15 +1499,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"); - } } @@ -1517,7 +1508,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; @@ -2054,7 +2061,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; conf = this->private; ret = dict_get_str (dict, "key", &key); @@ -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 919eed02ec6..a5d964a29d6 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -1077,7 +1077,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); |