xref: /freebsd/libexec/rc/rc.d/mountcritlocal (revision f1602aff80182979e18c35d095eedb831cfc3998)
10696600cSBjoern A. Zeeb#!/bin/sh
20696600cSBjoern A. Zeeb#
30696600cSBjoern A. Zeeb# $FreeBSD$
40696600cSBjoern A. Zeeb#
50696600cSBjoern A. Zeeb
60696600cSBjoern A. Zeeb# PROVIDE: mountcritlocal
7*f1602affSCy Schubert# REQUIRE: root hostid_save mdconfig
80696600cSBjoern A. Zeeb# KEYWORD: nojail shutdown
90696600cSBjoern A. Zeeb
100696600cSBjoern A. Zeeb. /etc/rc.subr
110696600cSBjoern A. Zeeb
120696600cSBjoern A. Zeebname="mountcritlocal"
130696600cSBjoern A. Zeebdesc="Mount critical local filesystems"
140696600cSBjoern A. Zeebstart_cmd="mountcritlocal_start"
150696600cSBjoern A. Zeebstop_cmd=sync
160696600cSBjoern A. Zeeb
170696600cSBjoern A. Zeebmountcritlocal_start()
180696600cSBjoern A. Zeeb{
190696600cSBjoern A. Zeeb	local err holders waited
200696600cSBjoern A. Zeeb
210696600cSBjoern A. Zeeb	# Set up the list of network filesystem types for which mounting
220696600cSBjoern A. Zeeb	# should be delayed until after network initialization.
230696600cSBjoern A. Zeeb	case ${extra_netfs_types} in
240696600cSBjoern A. Zeeb	[Nn][Oo])
250696600cSBjoern A. Zeeb		;;
260696600cSBjoern A. Zeeb	*)
270696600cSBjoern A. Zeeb		netfs_types="${netfs_types} ${extra_netfs_types}"
280696600cSBjoern A. Zeeb		;;
290696600cSBjoern A. Zeeb	esac
300696600cSBjoern A. Zeeb
310696600cSBjoern A. Zeeb	# Mount everything except nfs filesystems.
320696600cSBjoern A. Zeeb	check_startmsgs && echo -n 'Mounting local filesystems:'
330696600cSBjoern A. Zeeb	mount_excludes='no'
340696600cSBjoern A. Zeeb	for i in ${netfs_types}; do
350696600cSBjoern A. Zeeb		fstype=${i%:*}
360696600cSBjoern A. Zeeb		mount_excludes="${mount_excludes}${fstype},"
370696600cSBjoern A. Zeeb	done
380696600cSBjoern A. Zeeb	mount_excludes=${mount_excludes%,}
390696600cSBjoern A. Zeeb
400696600cSBjoern A. Zeeb	mount -a -t ${mount_excludes}
410696600cSBjoern A. Zeeb	err=$?
420696600cSBjoern A. Zeeb	if [ ${err} -ne 0 ]; then
430696600cSBjoern A. Zeeb		echo 'Mounting /etc/fstab filesystems failed,' \
440696600cSBjoern A. Zeeb		    'will retry after root mount hold release'
450696600cSBjoern A. Zeeb		root_hold_wait
460696600cSBjoern A. Zeeb		mount -a -t ${mount_excludes}
470696600cSBjoern A. Zeeb		err=$?
480696600cSBjoern A. Zeeb	fi
490696600cSBjoern A. Zeeb
500696600cSBjoern A. Zeeb	check_startmsgs && echo '.'
510696600cSBjoern A. Zeeb
520696600cSBjoern A. Zeeb	case ${err} in
530696600cSBjoern A. Zeeb	0)
540696600cSBjoern A. Zeeb		;;
550696600cSBjoern A. Zeeb	*)
560696600cSBjoern A. Zeeb		echo 'Mounting /etc/fstab filesystems failed,' \
570696600cSBjoern A. Zeeb		    'startup aborted'
580696600cSBjoern A. Zeeb		stop_boot true
590696600cSBjoern A. Zeeb		;;
600696600cSBjoern A. Zeeb	esac
610696600cSBjoern A. Zeeb}
620696600cSBjoern A. Zeeb
630696600cSBjoern A. Zeebload_rc_config $name
640696600cSBjoern A. Zeebrun_rc_command "$1"
65