96 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| #!/sbin/runscript
 | |
| # Copyright 2007-2008 Roy Marples
 | |
| # All rights reserved
 | |
| 
 | |
| 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
 | |
| }
 | |
| 
 | |
| 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"
 | |
| }
 |