178344Sobrien#!/bin/sh 278344Sobrien# 398184Sgordon# $FreeBSD: stable/11/etc/rc.d/fsck 331216 2018-03-19 17:37:51Z dab $ 478344Sobrien# 578344Sobrien 678344Sobrien# PROVIDE: fsck 7252310Shrs# REQUIRE: swap 8136224Smtm# KEYWORD: nojail 978344Sobrien 1078344Sobrien. /etc/rc.subr 1178344Sobrien 1278344Sobrienname="fsck" 13298514Slmedesc="Run file system checks" 1478344Sobrienstart_cmd="fsck_start" 1578344Sobrienstop_cmd=":" 1678344Sobrien 1778344Sobrienfsck_start() 1878344Sobrien{ 1998184Sgordon if [ "$autoboot" = no ]; then 2078344Sobrien echo "Fast boot: skipping disk checks." 21126862Skientzle elif [ ! -r /etc/fstab ]; then 22126862Skientzle echo "Warning! No /etc/fstab: skipping disk checks." 2378344Sobrien elif [ "$autoboot" = yes ]; then 24289186Svangyzen # During fsck ignore SIGQUIT 2578344Sobrien trap : 3 2678344Sobrien 27197947Sdougb check_startmsgs && echo "Starting file system checks:" 28124618Smtm if checkyesno background_fsck; then 29124618Smtm fsck -F -p 30124618Smtm else 3198184Sgordon fsck -p 32124618Smtm fi 3398184Sgordon 34299349Strasz err=$? 35299349Strasz if [ ${err} -eq 3 ]; then 36299349Strasz echo "Warning! Some of the devices might not be" \ 37299349Strasz "available; retrying" 38299349Strasz root_hold_wait 39299349Strasz check_startmsgs && echo "Restarting file system checks:" 40299349Strasz if checkyesno background_fsck; then 41299349Strasz fsck -F -p 42299349Strasz else 43299349Strasz fsck -p 44299349Strasz fi 45299349Strasz err=$? 46299349Strasz fi 47299349Strasz 48299349Strasz case ${err} in 4978344Sobrien 0) 5078344Sobrien ;; 5178344Sobrien 2) 5278344Sobrien stop_boot 5378344Sobrien ;; 5478344Sobrien 4) 5578344Sobrien echo "Rebooting..." 5678344Sobrien reboot 5778344Sobrien echo "Reboot failed; help!" 5878344Sobrien stop_boot 5978344Sobrien ;; 60331216Sdab 8|16) 6198184Sgordon if checkyesno fsck_y_enable; then 62193944Savg echo "File system preen failed, trying fsck -y ${fsck_y_flags}" 63193944Savg fsck -y ${fsck_y_flags} 6498184Sgordon case $? in 6598184Sgordon 0) 6698184Sgordon ;; 6798184Sgordon *) 6898184Sgordon echo "Automatic file system check failed; help!" 6998184Sgordon stop_boot 7098184Sgordon ;; 7198184Sgordon esac 7298184Sgordon else 7398184Sgordon echo "Automatic file system check failed; help!" 7498184Sgordon stop_boot 7598184Sgordon fi 7698184Sgordon ;; 7778344Sobrien 12) 7878344Sobrien echo "Boot interrupted." 7978344Sobrien stop_boot 8078344Sobrien ;; 8178344Sobrien 130) 8278344Sobrien stop_boot 8378344Sobrien ;; 8478344Sobrien *) 85299349Strasz echo "Unknown error ${err}; help!" 8678344Sobrien stop_boot 8778344Sobrien ;; 8878344Sobrien esac 8978344Sobrien fi 9078344Sobrien} 9178344Sobrien 9278344Sobrienload_rc_config $name 9378344Sobrienrun_rc_command "$1" 94