aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh')
-rw-r--r--recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh b/recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh
new file mode 100644
index 0000000000..6ff83e50d7
--- /dev/null
+++ b/recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# umountnfs.sh Unmount all network filesystems.
+#
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# Write a reboot record to /var/log/wtmp before unmounting
+halt -w
+
+# Ensure /proc is mounted
+test -r /proc/mounts || mount -t proc proc /proc
+
+echo "Unmounting remote filesystems..."
+
+#
+# Read the list of mounted file systems and -f umount the
+# known network file systems. -f says umount it even if
+# the server is unreachable. Do not attempt to umount
+# the root file system. Unmount in reverse order from
+# that given by /proc/mounts (otherwise it may not work).
+#
+unmount() {
+ local dev mp type opts
+ if read dev mp type opts
+ then
+ # recurse - unmount later items
+ unmount
+ # skip /, /proc and /dev
+ case "$mp" in
+ /|/proc)return 0;;
+ /dev) return 0;;
+ esac
+ # then unmount this, if nfs
+ case "$type" in
+ nfs|smbfs|ncpfs) umount -f "$mp";;
+ esac
+ fi
+}
+
+unmount </proc/mounts