198184Sgordon#!/bin/sh
298184Sgordon#
398184Sgordon# $FreeBSD$
498184Sgordon#
598184Sgordon
698184Sgordon# PROVIDE: bgfsck
7148274Sobrien# REQUIRE: cron devfs syslogd
8136224Smtm# KEYWORD: nojail
998184Sgordon
1098184Sgordon. /etc/rc.subr
1198184Sgordon
1298184Sgordonname="background-fsck"
1398184Sgordonrcvar="background_fsck"
14108018Smckusickstart_cmd="bgfsck_start"
1598184Sgordonstop_cmd=":"
1698184Sgordon
17238416Skevlobgfsck_start()
18108018Smckusick{
19167437Sbrooks	if [ -z "${rc_force}" ]; then
20238628Sdteske		background_fsck_delay=${background_fsck_delay:-0}
21167437Sbrooks	else
22167437Sbrooks		background_fsck_delay=0
23167437Sbrooks	fi
24167437Sbrooks	if [ ${background_fsck_delay} -lt 0 ]; then
25229783Suqs		echo "Background file system checks delayed indefinitely"
26167437Sbrooks		return 0
27167437Sbrooks	fi
28167437Sbrooks
29108018Smckusick	bgfsck_msg='Starting background file system checks'
30167437Sbrooks	if [ "${background_fsck_delay}" -gt 0 ]; then
31108018Smckusick		bgfsck_msg="${bgfsck_msg} in ${background_fsck_delay} seconds"
32108018Smckusick	fi
33167437Sbrooks	if [ -z "${rc_force}" ]; then
34197947Sdougb		check_startmsgs && echo "${bgfsck_msg}."
35167437Sbrooks	fi
36108018Smckusick
37108018Smckusick	(sleep ${background_fsck_delay}; nice -4 fsck -B -p) 2>&1 | \
38113904Smatusita	    logger -p daemon.notice -t fsck &
39108018Smckusick}
40108018Smckusick
4198184Sgordonload_rc_config $name
4298184Sgordonrun_rc_command "$1"
43