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);  | 
