Ajout ACPID
[hvlinux.git] / stage2 / bootscripts / mountnetfs
index d397af7..55c48af 100755 (executable)
@@ -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
         ;;
 
     *)