fsck revision 298514
178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $FreeBSD: head/etc/rc.d/fsck 298514 2016-04-23 16:10:54Z lme $
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
3478344Sobrien		case $? in
3578344Sobrien		0)
3678344Sobrien			;;
3778344Sobrien		2)
3878344Sobrien			stop_boot
3978344Sobrien			;;
4078344Sobrien		4)
4178344Sobrien			echo "Rebooting..."
4278344Sobrien			reboot
4378344Sobrien			echo "Reboot failed; help!"
4478344Sobrien			stop_boot
4578344Sobrien			;;
4678344Sobrien		8)
4798184Sgordon			if checkyesno fsck_y_enable; then
48193944Savg				echo "File system preen failed, trying fsck -y ${fsck_y_flags}"
49193944Savg				fsck -y ${fsck_y_flags}
5098184Sgordon				case $? in
5198184Sgordon				0)
5298184Sgordon					;;
5398184Sgordon				*)
5498184Sgordon				echo "Automatic file system check failed; help!"
5598184Sgordon					stop_boot
5698184Sgordon					;;
5798184Sgordon				esac
5898184Sgordon			else
5998184Sgordon				echo "Automatic file system check failed; help!"
6098184Sgordon				stop_boot
6198184Sgordon			fi
6298184Sgordon			;;
6378344Sobrien		12)
6478344Sobrien			echo "Boot interrupted."
6578344Sobrien			stop_boot
6678344Sobrien			;;
6778344Sobrien		130)
6878344Sobrien			stop_boot
6978344Sobrien			;;
7078344Sobrien		*)
7178344Sobrien			echo "Unknown error; help!"
7278344Sobrien			stop_boot
7378344Sobrien			;;
7478344Sobrien		esac
7578344Sobrien	fi
7678344Sobrien}
7778344Sobrien
7878344Sobrienload_rc_config $name
7978344Sobrienrun_rc_command "$1"
80