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