X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=nfsfs.init;h=d765d5b909ae38ec6d50e8d5cf9152625476662e;hb=dc4877f3076ae83af079dbf83d0d6990168051b9;hp=38e567a13d1274760981522da0afa7cb4877bf0d;hpb=2da61068e18ed17a21d699313f9b07fdcfed8757;p=packages%2Fnfs-utils.git diff --git a/nfsfs.init b/nfsfs.init index 38e567a..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 @@ -24,7 +18,8 @@ fi . /etc/sysconfig/network # Get service config -[ -f /etc/sysconfig/nfsclient ] && . /etc/sysconfig/nfsclient +[ -f /etc/sysconfig/nfsfs ] && . /etc/sysconfig/nfsfs +[ -f /etc/sysconfig/nfslock ] && . /etc/sysconfig/nfslock # Check that networking is up. if is_yes "${NETWORKING}"; then @@ -36,33 +31,33 @@ else exit 0 fi -# See how we were called. -case "$1" in - start) - if [ ! -f /var/lock/subsys/nfsfs ]; then - if is_yes "$NFS4" ; then - if grep -q nfs4 /proc/filesystems; then - modprobe -s nfs > /dev/null 2>&1 - if [ "$(kernelverser)" -ge "002006" ]; then - grep -q rpc_pipefs /proc/filesystems && \ - ! grep -q rpc_pipefs /proc/mounts && \ - run_cmd "Mounting /var/lib/nfs/rpc_pipefs filesystem" mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs - fi - if [ ! -f /var/lock/subsys/idmapd ]; then - msg_starting "NFS idmapd" - daemon rpc.idmapd $RPCIDMAPOPTIONS - fi - msg_starting "NFS gssd" - daemon rpc.gssd -m $RPCGSSOPTIONS - fi - fi - run_cmd "Mounting NFS filesystems" mount -a -t nfs - touch /var/lock/subsys/nfsfs - else +if [ "$1" != "stop" ]; then + check_portmapper || { nls "Error: portmap isn't running" && exit 0; } +fi + +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 @@ -72,48 +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 is_yes "$NFS4" ; then - if grep -q nfs4 /proc/filesystems; then - msg_stopping "NFS gssd" - killproc rpc.gssd - if [ -f /var/lock/subsys/idmapd -a ! -f /var/lock/subsys/nfs ]; then - msg_stopping "NFS idmapd" - killproc rpc.idmapd - rm -f /var/lock/subsys/idmapd - fi - fi - 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