From dbd9bd7b2d806163f9bb069ec04e24d9269f769c Mon Sep 17 00:00:00 2001 From: Meghana Madhusudhan Date: Fri, 10 Apr 2015 19:14:42 +0530 Subject: NFS-Ganesha : Fixing HA script invocation and others gluster features.ganesha disable failed invariably. And also, there were problems in unexporting volumes dynamically.Fixed the above problems. Change-Id: I29aa289dc8dc7b39fe0fd9d3098a02097ca8ca0c BUG: 1207629 Signed-off-by: Meghana Madhusudhan Reviewed-on: http://review.gluster.org/10199 Reviewed-by: jiffin tony Thottan Reviewed-by: Kaleb KEITHLEY Tested-by: NetBSD Build System --- extras/ganesha/scripts/create-export-ganesha.sh | 7 ++++--- extras/ganesha/scripts/dbus-send.sh | 17 ++++++++--------- xlators/features/ganesha/src/ganesha.c | 16 ++++++++++++++++ xlators/mgmt/glusterd/src/glusterd-ganesha.c | 15 +++++++++++---- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/extras/ganesha/scripts/create-export-ganesha.sh b/extras/ganesha/scripts/create-export-ganesha.sh index 8140a11f548..de869c4629d 100755 --- a/extras/ganesha/scripts/create-export-ganesha.sh +++ b/extras/ganesha/scripts/create-export-ganesha.sh @@ -36,7 +36,8 @@ echo -e "# WARNING : Using Gluster CLI will overwrite manual # and run ganesha-ha.sh --refresh-config." echo "EXPORT{" -echo " Export_Id = 1;" +echo " Export_Id = 2;" +echo " Path = \"/$VOL\";" echo " FSAL {" echo " name = "GLUSTER";" echo " hostname=\"localhost\";" @@ -45,8 +46,8 @@ echo " }" echo " Access_type = RW;" echo ' Squash="No_root_squash";' echo " Pseudo=\"/$VOL\";" -echo ' Protocols = "3,4" ;' -echo ' Transports = "UDP,TCP";' +echo ' Protocols = "3", "4" ;' +echo ' Transports = "UDP","TCP";' echo ' SecType = "sys";' echo " }" } diff --git a/extras/ganesha/scripts/dbus-send.sh b/extras/ganesha/scripts/dbus-send.sh index 406162f0747..170983a7a77 100755 --- a/extras/ganesha/scripts/dbus-send.sh +++ b/extras/ganesha/scripts/dbus-send.sh @@ -1,9 +1,11 @@ #/bin/bash declare -i EXPORT_ID -GANESHA_DIR=$1 -OPTION=$1 -VOL=$2 +GANESHA_DIR=${1%/} +OPTION=$2 +VOL=$3 + +CONF=$(cat /etc/sysconfig/ganesha | grep "CONFFILE" | cut -f 2 -d "=") function check_cmd_status() { @@ -38,24 +40,23 @@ function dynamic_export_add() sed -i s/Export_Id.*/"Export_Id= $EXPORT_ID ;"/ \ $GANESHA_DIR/exports/export.$VOL.conf check_cmd_status `echo $?` - dbus-send --print-reply --system \ + dbus-send --system \ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \ org.ganesha.nfsd.exportmgr.AddExport string:$GANESHA_DIR/exports/export.$VOL.conf \ string:"EXPORT(Path=/$VOL)" - } #This function removes an export dynamically(uses the export_id of the export) function dynamic_export_remove() { removed_id=`cat $GANESHA_DIR/exports/export.$VOL.conf |\ -grep Export_Id | cut -d " " -f3` - echo $removed_id +grep Export_Id | cut -d " " -f8` check_cmd_status `echo $?` dbus-send --print-reply --system \ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \ org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id check_cmd_status `echo $?` + sed -i /$VOL.conf/d $CONF rm -rf $GANESHA_DIR/exports/export.$VOL.conf } @@ -63,12 +64,10 @@ org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id if [ "$OPTION" = "on" ]; then dynamic_export_add $@ - check_cmd_status `echo $?` fi if [ "$OPTION" = "off" ]; then dynamic_export_remove $@ - check_cmd_status `echo $?` fi diff --git a/xlators/features/ganesha/src/ganesha.c b/xlators/features/ganesha/src/ganesha.c index f034fc00d46..a3d392e3ecf 100644 --- a/xlators/features/ganesha/src/ganesha.c +++ b/xlators/features/ganesha/src/ganesha.c @@ -18,6 +18,22 @@ #include "ganesha-mem-types.h" +int32_t +mem_acct_init (xlator_t *this) +{ + int ret = -1; + + if (!this) + return ret; + + ret = xlator_mem_acct_init (this, gf_ganesha_mt_end + 1); + + if (ret != 0) + gf_log (this->name, GF_LOG_WARNING, "Memory accounting" + "init failed"); + + return ret; +} int32_t init (xlator_t *this) diff --git a/xlators/mgmt/glusterd/src/glusterd-ganesha.c b/xlators/mgmt/glusterd/src/glusterd-ganesha.c index 534e332cdee..fe67be187f2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-ganesha.c +++ b/xlators/mgmt/glusterd/src/glusterd-ganesha.c @@ -194,6 +194,7 @@ glusterd_op_set_ganesha (dict_t *dict, char **errstr) int32_t dict_count = 0; dict_t *vol_opts = NULL; int count = 0; + char *dup = NULL; this = THIS; GF_ASSERT (this); @@ -217,6 +218,12 @@ glusterd_op_set_ganesha (dict_t *dict, char **errstr) goto out; } + dup = gf_strdup (value); + if (!dup) { + ret = -1; + goto out; + } + ret = glusterd_handle_ganesha_op (dict, errstr, key, value); if (ret) { gf_log (this->name, GF_LOG_ERROR, @@ -422,7 +429,7 @@ ganesha_manage_export (dict_t *dict, char *value, char **op_errstr) if (ret) gf_asprintf(op_errstr, "Dynamic export" " addition/deletion failed." - "Please see log file for details"); + " Please see log file for details"); } out: return ret; @@ -436,7 +443,7 @@ tear_down_cluster(void) if (is_ganesha_host()) { runinit (&runner); - runner_add_args (&runner, "sh", CONFDIR, + runner_add_args (&runner, "sh", GANESHA_PREFIX"/ganesha-ha.sh", "teardown", CONFDIR, NULL); ret = runner_run(&runner); @@ -470,7 +477,7 @@ stop_ganesha (char **op_errstr) ret = tear_down_cluster(); if (ret == -1) { gf_asprintf (op_errstr, "Cleanup of NFS-Ganesha" - "HA config failed."); + " HA config failed."); goto out; } @@ -527,7 +534,7 @@ start_ganesha (char **op_errstr) ret = setup_cluster(); if (ret == -1) { gf_asprintf (op_errstr, "Failed to set up HA " - "config for NFS-Ganesha." + "config for NFS-Ganesha. " "Please check the log file for details"); goto out; } -- cgit