From a12dbdc6c93a7d63591610378e3e570b7c7d2143 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Sun, 2 Mar 2008 21:13:21 +0000 Subject: Don't check for root in prefix. --- init.d/netmount.in | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 init.d/netmount.in (limited to 'init.d/netmount.in') diff --git a/init.d/netmount.in b/init.d/netmount.in new file mode 100644 index 00000000..3aa46e1a --- /dev/null +++ b/init.d/netmount.in @@ -0,0 +1,96 @@ +#!/sbin/runscript +# Copyright 2007-2008 Roy Marples +# All rights reserved. Released under the 2-clause BSD license. + +description="Mounts network shares according to /etc/fstab." + +need_portmap() +{ + local opts= + local IFS=" +" + set -- $(fstabinfo --options --fstype nfs,nfs4) + for opts; do + case ,${opts}, in + *,noauto,*|*,nolock,*);; + *) return 0;; + esac + done + return 1 +} + +depend() +{ + # Only have portmap as a dependency if there is a nfs mount in fstab + # that is set to mount at boot + local pmap="" + if need_portmap; then + pmap="${pmap} rpc.statd" + [ -x /etc/init.d/rpcbind ] \ + && pmap="rpcbind" \ + || pmap="portmap" + fi + + config /etc/fstab + need net ${pmap} + use afc-client amd autofs dns nfs nfsmount portmap rpcbind rpc.statd + keyword nojail noprefix +} + +start() +{ + local myneed= myuse= pmap="portmap" nfsmounts= + [ -x /etc/init.d/rpcbind ] && pmap="rpcbind" + + local x= fs= + for x in ${net_fs_list}; do + case "${x}" in + nfs|nfs4) + # If the nfsmount script took care of the nfs + # filesystems, then there's no point in trying + # them twice + service_started nfsmount && continue + + # Only try to mount NFS filesystems if portmap was + # started. This is to fix "hang" problems for new + # users who do not add portmap to the default runlevel. + if need_portmap && ! service_started "${pmap}"; then + continue + fi + ;; + esac + fs="${fs}${fs:+,}${x}" + done + + ebegin "Mounting network filesystems" + mount -at ${fs} + ewend $? "Could not mount all network filesystems" + return 0 +} + +stop() +{ + local x= fs= + + ebegin "Unmounting network filesystems" + . "${RC_LIBDIR}/sh/rc-mount.sh" + + for x in ${net_fs_list}; do + fs="${fs}${fs:+,}${x}" + done + if [ -n "${fs}" ]; then + umount -at ${fs} || eerror "Failed to simply unmount filesystems" + fi + + eindent + fs= + for x in ${net_fs_list}; do + fs="${fs}${fs:+|}${x}" + done + [ -n "${fs}" ] && fs="^(${fs})$" + do_unmount "umount" ${fs:+--fstype-regex} ${fs} --netdev + retval=$? + + eoutdent + eend ${retval} "Failed to unmount network filesystems" +} -- cgit v1.2.3