X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=stage2%2Fbootscripts%2Fmountnetfs;h=55c48afa215fb178fb7f7752d704d5e65389249c;hb=785f43b4dd400fff43b9fa169fded7fef7c9025e;hp=d397af792268797f7b4889890608579e76ba0a6d;hpb=16cc35ba4890382ee9368a176e4f5a7fa773b7a6;p=hvlinux.git diff --git a/stage2/bootscripts/mountnetfs b/stage2/bootscripts/mountnetfs index d397af7..55c48af 100755 --- a/stage2/bootscripts/mountnetfs +++ b/stage2/bootscripts/mountnetfs @@ -7,6 +7,30 @@ source /etc/rc.d/init.d/functions log_script_name "$0 $*" +mountnetfs_start() { + if ! grep -q "_netdev" /etc/fstab; then + echo "No network filesystem found in fstab" + exit ${EXIT_CODE_WARNING} + fi + + if grep -q "nfs" /etc/fstab; then + # rpc.statd is required to mount nfs shares + if [ ! -x /sbin/rpc.statd ]; then + echo "Missing rpc.statd executable" + exit ${EXIT_CODE_WARNING} + fi + + if statusproc rpc.statd | grep -q "not 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 @@ -22,12 +46,12 @@ mountnetfs_stop() { # Try and stop processes the nice way # (probably won't work in most cases) /bin/fuser -TERM -m $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. # This one will work all of the time! - if [ $? == 0 ]; then + if [ $? -eq 0 ]; then /bin/sleep 3 /bin/fuser -km $NETMOUNTS > /dev/null fi @@ -40,7 +64,7 @@ mountnetfs_stop() { /bin/umount -a -O _netdev # save the return value from umount - if [ $? != 0 ]; then + if [ $? -ne 0 ]; then NERRVAL=${EXIT_CODE_FAILURE} fi @@ -48,7 +72,7 @@ mountnetfs_stop() { # by fstype. This list can be extended later as # more network filesystems are supported by mount. /bin/umount -a -t coda,ncpfs,nfs,smbfs - if [ $? == 0 ]; then + if [ $? -eq 0 ]; then return ${NERRVAL} else # make certain that we return an error @@ -60,17 +84,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 with"; then + cmd_run_log_box "Stopping rpc.statd" killproc rpc.statd + fi ;; *)