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