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 12273013Shrsname="background_fsck" 13298514Slmedesc="Run fsck in background" 1498184Sgordonrcvar="background_fsck" 15108018Smckusickstart_cmd="bgfsck_start" 16287614Shrsstart_precmd="bgfsck_start_precmd" 1798184Sgordonstop_cmd=":" 1898184Sgordon 19287614Shrsbgfsck_start_precmd() 20287614Shrs{ 21287614Shrs if [ $($ID -u) != 0 ]; then 22287614Shrs err 1 "Must be root." 23287614Shrs fi 24287614Shrs} 25287614Shrs 26238416Skevlobgfsck_start() 27108018Smckusick{ 28287614Shrs : ${background_fsck_delay=0} 29287614Shrs if [ -n "${rc_force}" ]; then 30167437Sbrooks background_fsck_delay=0 31167437Sbrooks fi 32167437Sbrooks if [ ${background_fsck_delay} -lt 0 ]; then 33287614Shrs warn "Background file system checks delayed indefinitely" 34167437Sbrooks return 0 35167437Sbrooks fi 36167437Sbrooks 37108018Smckusick bgfsck_msg='Starting background file system checks' 38167437Sbrooks if [ "${background_fsck_delay}" -gt 0 ]; then 39108018Smckusick bgfsck_msg="${bgfsck_msg} in ${background_fsck_delay} seconds" 40108018Smckusick fi 41167437Sbrooks if [ -z "${rc_force}" ]; then 42197947Sdougb check_startmsgs && echo "${bgfsck_msg}." 43167437Sbrooks fi 44108018Smckusick 45108018Smckusick (sleep ${background_fsck_delay}; nice -4 fsck -B -p) 2>&1 | \ 46113904Smatusita logger -p daemon.notice -t fsck & 47108018Smckusick} 48108018Smckusick 4998184Sgordonload_rc_config $name 5098184Sgordonrun_rc_command "$1" 51