diff options
Diffstat (limited to 'mk/rootfs/openrc/etc/init.d/netmount')
-rw-r--r-- | mk/rootfs/openrc/etc/init.d/netmount | 82 |
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" +} |