X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;ds=sidebyside;f=stage2%2Fbootscripts%2Fmountnetfs;h=893792fc8da96b6782a71fb2d703a18a298d52ec;hb=6039efc819b29ad7fa890c95fda918c57ebe475c;hp=d812d80afcd278e33de47be4290c4cf2c89c3b8c;hpb=f9cf3632a64429991fa5e6f556b0c4017e0e9435;p=hvlinux.git diff --git a/stage2/bootscripts/mountnetfs b/stage2/bootscripts/mountnetfs index d812d80..893792f 100755 --- a/stage2/bootscripts/mountnetfs +++ b/stage2/bootscripts/mountnetfs @@ -7,13 +7,46 @@ source /etc/rc.d/init.d/functions log_script_name "$0 $*" +# Load global network parameters +source /etc/sysconfig/network/network-parameters + +# Make sure networking is up. If not, this bootscript will wait forever +if [ ! -f "${NETWORKING_UP_FILE}" ]; then + msg_log "${0}: Network is down" + exit ${EXIT_CODE_WARNING} +fi + +mountnetfs_start() { + if ! grep -q "_netdev" /etc/fstab; then + msg_log "No network filesystem found in fstab" + exit ${EXIT_CODE_SUCCESS} + fi + + if grep -q "nfs" /etc/fstab; then + # rpc.statd is required to mount nfs shares + if [ ! -x /sbin/rpc.statd ]; then + msg_log "Missing rpc.statd executable" + exit ${EXIT_CODE_WARNING} + fi + + if ! statusproc rpc.statd | grep -q "running"; then + cmd_run_log_box "Starting rpc.statd" loadproc rpc.statd + fi + fi + + # Walk through /etc/fstab and mount all file systems that have the + #_netdev option set in the fs_mntops field (the 4th field. See man + # fstab for more info). + cmd_run_log_box "Mounting network file systems" mount -a -O _netdev +} + mountnetfs_stop() { # The following line obtains a list from the output of # mount for all netfs types and anything that was # mounted with the _netdev option. NETMOUNTS=`/bin/mount \ | /bin/grep '_netdev\|smbfs\|ncpfs|\coda\|nfs' \ - | /usr/bin/cut -d " " -f 3 | /bin/sed 's/$/ /g'` + | /usr/bin/cut -d " " -f 3 | /bin/sed ':a;$!N;s/\n/ /;ta'` # Check to see if anything was listed from above # (see if anything is actually needs to be unmounted) @@ -21,8 +54,8 @@ mountnetfs_stop() { # There is something mounted # Try and stop processes the nice way # (probably won't work in most cases) - /bin/fuser -TERM -m $NETMOUNTS > /dev/null - + /bin/fuser -SIGTERM -km $NETMOUNTS > /dev/null + # Check and see if it found anything. If it # did, then give 3 seconds for things to exit # the nice way before killing them off. @@ -60,17 +93,16 @@ mountnetfs_stop() { fi } - case "$1" in start) - # Walk through /etc/fstab and mount all file systems that have the - # _netdev option set in the fs_mntops field (the 4th field. See man - # fstab for more info). - cmd_run_log_box "Mounting network file systems" mount -a -O _netdev + mountnetfs_start ;; stop) cmd_run_log_box "Unmounting network file systems" mountnetfs_stop + if statusproc rpc.statd | grep -q "running"; then + cmd_run_log_box "Stopping rpc.statd" killproc rpc.statd + fi ;; *)