summaryrefslogtreecommitdiff
path: root/mk/rootfs/openrc/etc/init.d/netmount
diff options
context:
space:
mode:
Diffstat (limited to 'mk/rootfs/openrc/etc/init.d/netmount')
-rw-r--r--mk/rootfs/openrc/etc/init.d/netmount82
1 files changed, 82 insertions, 0 deletions
diff --git a/mk/rootfs/openrc/etc/init.d/netmount b/mk/rootfs/openrc/etc/init.d/netmount
new file mode 100644
index 0000000..0f3757d
--- /dev/null
+++ b/mk/rootfs/openrc/etc/init.d/netmount
@@ -0,0 +1,82 @@
+#!/sbin/openrc-run
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Mounts network shares, other than NFS, according to /etc/fstab."
+# We skip all NFS shares in this script because they require extra
+# daemons to be running on the client in order to work correctly.
+# It is best to allow nfs-utils to handle all nfs shares.
+
+depend()
+{
+ config /etc/fstab
+ use dns
+}
+
+start()
+{
+ local x= fs= rc=
+ for x in $net_fs_list $extra_net_fs_list; do
+ case "$x" in
+ nfs|nfs4)
+ continue
+ ;;
+ esac
+ fs="$fs${fs:+,}$x"
+ done
+
+ ebegin "Mounting network filesystems"
+ mount -at $fs
+ rc=$?
+ if [ "$RC_UNAME" = Linux ]; then
+ mount -a -O _netdev
+ rc=$?
+ fi
+ ewend $rc "Could not mount all network filesystems"
+ return 0
+}
+
+stop()
+{
+ local x= fs=
+
+ ebegin "Unmounting network filesystems"
+ . "$RC_LIBEXECDIR"/sh/rc-mount.sh
+
+ for x in $net_fs_list $extra_net_fs_list; do
+ case "$x" in
+ nfs|nfs4)
+ continue
+ ;;
+ *)
+ fs="$fs${fs:+,}$x"
+ ;;
+ esac
+ done
+ if [ -n "$fs" ]; then
+ umount -at $fs || eerror "Failed to simply unmount filesystems"
+ fi
+
+ eindent
+ fs=
+ for x in $net_fs_list $extra_net_fs_list; do
+ case "$x" in
+ nfs|nfs4)
+ continue
+ ;;
+ *)
+ fs="$fs${fs:+|}$x"
+ ;;
+ esac
+ done
+ [ -n "$fs" ] && fs="^($fs)$"
+ do_unmount umount ${fs:+--fstype-regex} $fs --netdev
+ retval=$?
+
+ eoutdent
+ if [ "$RC_UNAME" = Linux ]; then
+ umount -a -O _netdev
+ retval=$?
+ fi
+ eend $retval "Failed to unmount network filesystems"
+}