178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $FreeBSD$
478344Sobrien#
578344Sobrien
678344Sobrien# PROVIDE: mountcritlocal
7208307Sdougb# REQUIRE: root hostid_save mdconfig
8215824Sdougb# KEYWORD: nojail shutdown
978344Sobrien
1078344Sobrien. /etc/rc.subr
1178344Sobrien
1278344Sobrienname="mountcritlocal"
13298514Slmedesc="Mount critical local filesystems"
1478344Sobrienstart_cmd="mountcritlocal_start"
15215824Sdougbstop_cmd=sync
1678344Sobrien
1778344Sobrienmountcritlocal_start()
1878344Sobrien{
19290197Strasz	local err holders waited
20176873Smtm
21124618Smtm	# Set up the list of network filesystem types for which mounting
22124618Smtm	# should be delayed until after network initialization.
23124618Smtm	case ${extra_netfs_types} in
24124618Smtm	[Nn][Oo])
25124618Smtm		;;
26124618Smtm	*)
27124618Smtm		netfs_types="${netfs_types} ${extra_netfs_types}"
28124618Smtm		;;
29124618Smtm	esac
3078344Sobrien
31124618Smtm	# Mount everything except nfs filesystems.
32298514Slme	check_startmsgs && echo -n 'Mounting local filesystems:'
33124618Smtm	mount_excludes='no'
34124618Smtm	for i in ${netfs_types}; do
35124618Smtm		fstype=${i%:*}
36124618Smtm		mount_excludes="${mount_excludes}${fstype},"
37124618Smtm	done
38124618Smtm	mount_excludes=${mount_excludes%,}
39290197Strasz
40124618Smtm	mount -a -t ${mount_excludes}
41176873Smtm	err=$?
42294021Strasz	if [ ${err} -ne 0 ]; then
43290197Strasz		echo 'Mounting /etc/fstab filesystems failed,' \
44290197Strasz		    'will retry after root mount hold release'
45299349Strasz		root_hold_wait
46290197Strasz		mount -a -t ${mount_excludes}
47290197Strasz		err=$?
48290197Strasz	fi
49290197Strasz
50197947Sdougb	check_startmsgs && echo '.'
5198184Sgordon
52176873Smtm	case ${err} in
53124618Smtm	0)
5498184Sgordon		;;
55124618Smtm	*)
56124618Smtm		echo 'Mounting /etc/fstab filesystems failed,' \
57290197Strasz		    'startup aborted'
58169668Smtm		stop_boot true
5998184Sgordon		;;
6098184Sgordon	esac
6178344Sobrien}
6278344Sobrien
6378344Sobrienload_rc_config $name
6478344Sobrienrun_rc_command "$1"
65