fsck revision 331216
1229997Sken#!/bin/sh 2229997Sken# 3229997Sken# $FreeBSD: stable/11/etc/rc.d/fsck 331216 2018-03-19 17:37:51Z dab $ 4229997Sken# 5229997Sken 6229997Sken# PROVIDE: fsck 7229997Sken# REQUIRE: swap 8229997Sken# KEYWORD: nojail 9229997Sken 10229997Sken. /etc/rc.subr 11229997Sken 12229997Skenname="fsck" 13229997Skendesc="Run file system checks" 14229997Skenstart_cmd="fsck_start" 15229997Skenstop_cmd=":" 16229997Sken 17229997Skenfsck_start() 18229997Sken{ 19229997Sken if [ "$autoboot" = no ]; then 20229997Sken echo "Fast boot: skipping disk checks." 21229997Sken elif [ ! -r /etc/fstab ]; then 22288310Smav echo "Warning! No /etc/fstab: skipping disk checks." 23288310Smav elif [ "$autoboot" = yes ]; then 24288310Smav # During fsck ignore SIGQUIT 25229997Sken trap : 3 26229997Sken 27229997Sken check_startmsgs && echo "Starting file system checks:" 28229997Sken if checkyesno background_fsck; then 29229997Sken fsck -F -p 30229997Sken else 31229997Sken fsck -p 32229997Sken fi 33229997Sken 34288310Smav err=$? 35229997Sken if [ ${err} -eq 3 ]; then 36229997Sken echo "Warning! Some of the devices might not be" \ 37229997Sken "available; retrying" 38229997Sken root_hold_wait 39229997Sken check_startmsgs && echo "Restarting file system checks:" 40229997Sken if checkyesno background_fsck; then 41229997Sken fsck -F -p 42229997Sken else 43287707Smav fsck -p 44287707Smav fi 45287707Smav err=$? 46287707Smav fi 47229997Sken 48229997Sken case ${err} in 49229997Sken 0) 50287707Smav ;; 51229997Sken 2) 52229997Sken stop_boot 53229997Sken ;; 54229997Sken 4) 55229997Sken echo "Rebooting..." 56287707Smav reboot 57229997Sken echo "Reboot failed; help!" 58229997Sken stop_boot 59287707Smav ;; 60287707Smav 8|16) 61229997Sken if checkyesno fsck_y_enable; then 62229997Sken echo "File system preen failed, trying fsck -y ${fsck_y_flags}" 63229997Sken fsck -y ${fsck_y_flags} 64229997Sken case $? in 65229997Sken 0) 66229997Sken ;; 67229997Sken *) 68229997Sken echo "Automatic file system check failed; help!" 69229997Sken stop_boot 70229997Sken ;; 71229997Sken esac 72229997Sken else 73229997Sken echo "Automatic file system check failed; help!" 74229997Sken stop_boot 75229997Sken fi 76229997Sken ;; 77229997Sken 12) 78229997Sken echo "Boot interrupted." 79229997Sken stop_boot 80229997Sken ;; 81229997Sken 130) 82229997Sken stop_boot 83229997Sken ;; 84229997Sken *) 85229997Sken echo "Unknown error ${err}; help!" 86229997Sken stop_boot 87229997Sken ;; 88229997Sken esac 89229997Sken fi 90229997Sken} 91229997Sken 92229997Skenload_rc_config $name 93229997Skenrun_rc_command "$1" 94229997Sken