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"
15287738Shrsstart_precmd="bgfsck_start_precmd"
1698184Sgordonstop_cmd=":"
1798184Sgordon
18287738Shrsbgfsck_start_precmd()
19287738Shrs{
20287738Shrs	if [ $($ID -u) != 0 ]; then
21287738Shrs		err 1 "Must be root."
22287738Shrs	fi
23287738Shrs}
24287738Shrs
25238416Skevlobgfsck_start()
26108018Smckusick{
27287738Shrs	: ${background_fsck_delay=0}
28287738Shrs	if [ -n "${rc_force}" ]; then
29167437Sbrooks		background_fsck_delay=0
30167437Sbrooks	fi
31167437Sbrooks	if [ ${background_fsck_delay} -lt 0 ]; then
32287738Shrs		warn "Background file system checks delayed indefinitely"
33167437Sbrooks		return 0
34167437Sbrooks	fi
35167437Sbrooks
36108018Smckusick	bgfsck_msg='Starting background file system checks'
37167437Sbrooks	if [ "${background_fsck_delay}" -gt 0 ]; then
38108018Smckusick		bgfsck_msg="${bgfsck_msg} in ${background_fsck_delay} seconds"
39108018Smckusick	fi
40167437Sbrooks	if [ -z "${rc_force}" ]; then
41197947Sdougb		check_startmsgs && echo "${bgfsck_msg}."
42167437Sbrooks	fi
43108018Smckusick
44108018Smckusick	(sleep ${background_fsck_delay}; nice -4 fsck -B -p) 2>&1 | \
45113904Smatusita	    logger -p daemon.notice -t fsck &
46108018Smckusick}
47108018Smckusick
4898184Sgordonload_rc_config $name
4998184Sgordonrun_rc_command "$1"
50