xref: /freebsd/libexec/rc/rc.d/mountcritlocal (revision 5ca8e32633c4ffbbcd6762e5888b6a4ba0708c6c)
1#!/bin/sh
2#
3#
4
5# PROVIDE: mountcritlocal
6# REQUIRE: root hostid_save mdconfig
7# KEYWORD: nojail shutdown
8
9. /etc/rc.subr
10
11name="mountcritlocal"
12desc="Mount critical local filesystems"
13start_cmd="mountcritlocal_start"
14stop_cmd=sync
15
16mountcritlocal_start()
17{
18	local err holders waited
19
20	# Set up the list of network filesystem types for which mounting
21	# should be delayed until after network initialization.
22	case ${extra_netfs_types} in
23	[Nn][Oo])
24		;;
25	*)
26		netfs_types="${netfs_types} ${extra_netfs_types}"
27		;;
28	esac
29
30	# Mount everything except nfs filesystems.
31	startmsg -n 'Mounting local filesystems:'
32	mount_excludes='no'
33	for i in ${netfs_types}; do
34		fstype=${i%:*}
35		mount_excludes="${mount_excludes}${fstype},"
36	done
37	mount_excludes=${mount_excludes%,}
38
39	mount -a -t ${mount_excludes}
40	err=$?
41	if [ ${err} -ne 0 ]; then
42		echo 'Mounting /etc/fstab filesystems failed,' \
43		    'will retry after root mount hold release'
44		root_hold_wait
45		mount -a -t ${mount_excludes}
46		err=$?
47	fi
48
49	startmsg '.'
50
51	case ${err} in
52	0)
53		;;
54	*)
55		echo 'Mounting /etc/fstab filesystems failed,' \
56		    'startup aborted'
57		stop_boot true
58		;;
59	esac
60}
61
62load_rc_config $name
63run_rc_command "$1"
64