xref: /dragonfly/etc/rc.d/fsck (revision 8af44722)
1#!/bin/sh
2#
3# $NetBSD: fsck,v 1.2 2001/06/18 06:42:35 lukem Exp $
4# $FreeBSD: src/etc/rc.d/fsck,v 1.4 2002/10/12 10:31:31 schweikh Exp $
5#
6
7# PROVIDE: fsck
8# REQUIRE: disks
9
10. /etc/rc.subr
11
12name="fsck"
13start_cmd="fsck_start"
14stop_cmd=":"
15
16fsck_start()
17{
18	if [ "$autoboot" = no ]; then
19		echo "Fast boot: skipping disk checks."
20	elif [ "$autoboot" = yes ]; then
21		# During fsck ignore SIGQUIT
22		trap : 3
23
24		echo "Starting file system checks:"
25		fsck -p
26
27		case $? in
28		0)
29			;;
30		2)
31			stop_boot
32			;;
33		4)
34			echo "Rebooting..."
35			reboot
36			echo "Reboot failed; help!"
37			stop_boot
38			;;
39		8)
40			if checkyesno fsck_y_enable; then
41				echo "File system preen failed, trying fsck -y."
42				fsck -y
43				case $? in
44				0)
45					;;
46				*)
47					echo "Automatic file system check failed; help!"
48					stop_boot
49					;;
50				esac
51			else
52				echo "Automatic file system check failed; help!"
53				stop_boot
54			fi
55			;;
56		12)
57			echo "Boot interrupted."
58			stop_boot
59			;;
60		130)
61			stop_boot
62			;;
63		*)
64			echo "Unknown error; help!"
65			stop_boot
66			;;
67		esac
68	fi
69}
70
71load_rc_config $name
72run_rc_command "$1"
73