diff options
author | Anoop C S <anoopcs@redhat.com> | 2018-03-21 13:09:01 +0530 |
---|---|---|
committer | Poornima G <pgurusid@redhat.com> | 2018-05-07 05:04:04 +0000 |
commit | 33131131469e18d3ebbdc6ce741c2984dc77b290 (patch) | |
tree | 73bba692f1ee157568e7a2e1b7f3a5c7478915dc /extras | |
parent | a6490fe02174d344f4ed81fa3bc6c0b5933f4faf (diff) |
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
Change-Id: I68a9055b50791f6ffd3b95a3c13d858a75fa6530
fixes: bz#1558921
BUG: 1558921
Signed-off-by: Anoop C S <anoopcs@redhat.com>
Diffstat (limited to 'extras')
-rwxr-xr-x | extras/hook-scripts/set/post/S30samba-set.sh | 11 | ||||
-rwxr-xr-x | extras/hook-scripts/start/post/S30samba-start.sh | 4 | ||||
-rwxr-xr-x | 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 b93415b9577..c596db02381 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 92ddaf4e37f..5d586ee9fae 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 5e878458ab3..ea799381d62 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 |