X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=nfsfs.init;h=d765d5b909ae38ec6d50e8d5cf9152625476662e;hb=dc4877f3076ae83af079dbf83d0d6990168051b9;hp=348cae77b349d4eb8aed25234508170a75a06f74;hpb=c70958a8b47f0371392e35cb7d4dd68d4e1ff2ce;p=packages%2Fnfs-utils.git diff --git a/nfsfs.init b/nfsfs.init index 348cae7..d765d5b 100644 --- a/nfsfs.init +++ b/nfsfs.init @@ -2,15 +2,9 @@ # # nfsfs Mount NFS filesystems. # -# Version: @(#) /etc/init.d/skeleton 1.01 26-Oct-1993 -# -# Author: Miquel van Smoorenburg, -# -# chkconfig: 345 15 88 +# chkconfig: 345 16 80 # description: Mounts and unmounts all Network File System (NFS) \ # mount points. -# -# $Id$ # Source networking configuration. if [ ! -f /etc/sysconfig/network ]; then @@ -23,6 +17,10 @@ fi # Get network config . /etc/sysconfig/network +# Get service config +[ -f /etc/sysconfig/nfsfs ] && . /etc/sysconfig/nfsfs +[ -f /etc/sysconfig/nfslock ] && . /etc/sysconfig/nfslock + # Check that networking is up. if is_yes "${NETWORKING}"; then if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then @@ -33,24 +31,33 @@ else exit 0 fi +if [ "$1" != "stop" ]; then + check_portmapper || { nls "Error: portmap isn't running" && exit 0; } +fi -# See how we were called. -case "$1" in - start) - if [ ! -f /var/lock/subsys/nfsfs ]; then - if [ "$NFSDTYPE" != "U" ] && grep -q nfs4 /proc/filesystems; then - msg_starting "NFS idmapd" - daemon rpc.cidmapd $RPCIDMAPOPTIONS - msg_starting "NFS gssd" - daemon rpc.gssd $RPCGSSOPTIONS - fi - run_cmd "Mounting NFS filesystems" mount -a -t nfs - touch /var/lock/subsys/nfsfs - else +if [ -z "$NFSUMOUNT_IGNORE" ]; then + NFSUMOUNT_IGNORE="/ /usr" +fi + +start() { + if [ -f /var/lock/subsys/nfsfs ]; then msg_already_running "NFSFS" + return fi - ;; - stop) + + # Set the ports lockd should listen on + if [ -n "$LOCKD_TCPPORT" ]; then + /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1 + fi + if [ -n "$LOCKD_UDPPORT" ]; then + /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1 + fi + + run_cmd "Mounting NFS filesystems" mount -a -t nfs,nfs4 + touch /var/lock/subsys/nfsfs +} + +stop() { if [ -f /proc/mounts ]; then fsfile="/proc/mounts" else @@ -60,43 +67,58 @@ case "$1" in show "Unmounting NFS filesystems" busy retry=3 - remaining=$(awk '$3 == "nfs" {print $2}' $fsfile) + remaining=$(awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \ + $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile) while [ -n "$remaining" -a $retry -gt 0 ]; do - fuser -msk -TERM `awk '$3 == "nfs" {print $2}' < $fsfile` + fuser -msk -TERM `awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \ + $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile` sleep 2 - fuser -msk -KILL `awk '$3 == "nfs" {print $2}' < $fsfile` - umount -a -f -t nfs - remaining=$(awk '$3 == "nfs" {print $2}' $fsfile) + fuser -msk -KILL `awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \ + $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile` + # Sort filesystems to unmount in reverse order + rem="" + for r in $(awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \ + $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile) ; do + rem="$r $rem" + done + for fs in $rem ; do + umount $fs + done + remaining=$(awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \ + $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile) retry=$(($retry-1)) done ok - if [ "$NFSDTYPE" != "U" ] && grep -q nfs4 /proc/filesystems; then - msg_stopping "NFS gssd" - killproc rpc.gssd - msg_stopping "NFS idmapd" - killproc rpc.cidmapd - fi rm -f /var/lock/subsys/nfsfs +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + reload|force-reload) + mount -a -t nfs,nfs4 ;; status) if [ -f /proc/mounts ]; then echo "Configured NFS mountpoints:" grep -v '^#' /etc/fstab | \ - awk '{ if ($3 ~ /^nfs$/ && $4 !~ /noauto/) print $2}' + awk '{ if ($3 ~ /^nfs(4$|$)/ && $4 !~ /noauto/) print $2}' echo "Active NFS mountpoints:" grep -v '^#' /proc/mounts | \ - awk '{ if ($3 ~ /^nfs$/ && $4 !~ /noauto/) print $2}' + awk '{ if ($3 ~ /^nfs(4$|$)/ && $4 !~ /noauto/) print $2}' else echo "/proc filesystem unavailable" fi ;; - restart) - $0 stop - $0 start - ;; - reload|force-reload) - mount -a -t nfs - ;; *) msg_usage "$0 {start|stop|restart|reload|force-reload|status}" exit 3