From 644bcd954000b77fc8f49e3a7941de23ca869427 Mon Sep 17 00:00:00 2001 From: Anoop C S Date: Wed, 21 Mar 2018 13:09:01 +0530 Subject: [PATCH 481/493] extras/hooks: Do not blindly remove volume share from smb.conf When Gluster volumes are shared via Samba, any extra smb.conf parameter setting done by administrator to those shares are lost during restart of the volume. Instead of removing the whole share completely from smb.conf(via hook scripts during volume stop) it is better to make it temporarily unavailable to end-users till the volume is started again. Therefore we make use of a smb.conf parameter named 'available'[1] to achieve the above intend. [1] https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html upstream ref: https://review.gluster.org/c/glusterfs/+/19750 Change-Id: I68a9055b50791f6ffd3b95a3c13d858a75fa6530 BUG: 1164778 Signed-off-by: Anoop C S Reviewed-on: https://code.engineering.redhat.com/gerrit/158495 Tested-by: RHGS Build Bot Reviewed-by: Sunil Kumar Heggodu Gopala Acharya --- extras/hook-scripts/set/post/S30samba-set.sh | 11 ++++++----- extras/hook-scripts/start/post/S30samba-start.sh | 4 +++- extras/hook-scripts/stop/pre/S30samba-stop.sh | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/extras/hook-scripts/set/post/S30samba-set.sh b/extras/hook-scripts/set/post/S30samba-set.sh index b93415b..c596db0 100755 --- a/extras/hook-scripts/set/post/S30samba-set.sh +++ b/extras/hook-scripts/set/post/S30samba-set.sh @@ -103,9 +103,9 @@ function sighup_samba () { fi } -function del_samba_share () { +function deactivate_samba_share () { volname=$1 - sed -i "/\[gluster-$volname\]/,/^$/d" ${CONFIGFILE} + sed -i -e '/^\[gluster-'"$volname"'\]/{ :a' -e 'n; /available = no/H; /^$/!{$!ba;}; x; /./!{ s/^/available = no/; $!{G;x}; $H; }; s/.*//; x; };' ${CONFIGFILE} } function is_volume_started () { @@ -140,12 +140,13 @@ if [ "$USERCIFS_SET" = "YES" ] || [ "$USERSMB_SET" = "YES" ]; then find_config_info if [ "$(get_smb "$VOL")" = "disable" ]; then - del_samba_share $VOL - sighup_samba + deactivate_samba_share $VOL else if ! grep --quiet "\[gluster-$VOL\]" ${CONFIGFILE} ; then add_samba_share $VOL - sighup_samba + else + sed -i '/\[gluster-'"$VOL"'\]/,/^$/!b;/available = no/d' ${CONFIGFILE} fi fi + sighup_samba fi diff --git a/extras/hook-scripts/start/post/S30samba-start.sh b/extras/hook-scripts/start/post/S30samba-start.sh index 92ddaf4..5d586ee 100755 --- a/extras/hook-scripts/start/post/S30samba-start.sh +++ b/extras/hook-scripts/start/post/S30samba-start.sh @@ -127,5 +127,7 @@ find_config_info if ! grep --quiet "\[gluster-$VOL\]" ${CONFIGFILE} ; then add_samba_share $VOL - sighup_samba +else + sed -i '/\[gluster-'"$VOL"'\]/,/^$/!b;/available = no/d' ${CONFIGFILE} fi +sighup_samba diff --git a/extras/hook-scripts/stop/pre/S30samba-stop.sh b/extras/hook-scripts/stop/pre/S30samba-stop.sh index 5e87845..ea79938 100755 --- a/extras/hook-scripts/stop/pre/S30samba-stop.sh +++ b/extras/hook-scripts/stop/pre/S30samba-stop.sh @@ -56,9 +56,9 @@ function find_config_info () { PIDDIR=`smbd -b | grep PIDDIR | awk '{print $2}'` } -function del_samba_share () { +function deactivate_samba_share () { volname=$1 - sed -i "/\[gluster-$volname\]/,/^$/d" ${CONFIGFILE} + sed -i -e '/^\[gluster-'"$volname"'\]/{ :a' -e 'n; /available = no/H; /^$/!{$!ba;}; x; /./!{ s/^/available = no/; $!{G;x}; $H; }; s/.*//; x; };' ${CONFIGFILE} } function sighup_samba () { @@ -73,5 +73,5 @@ function sighup_samba () { parse_args "$@" find_config_info -del_samba_share $VOL +deactivate_samba_share $VOL sighup_samba -- 1.8.3.1