fsck revision 126862
178344Sobrien#!/bin/sh 278344Sobrien# 398184Sgordon# $NetBSD: fsck,v 1.2 2001/06/18 06:42:35 lukem Exp $ 498184Sgordon# $FreeBSD: head/etc/rc.d/fsck 126862 2004-03-11 20:00:10Z kientzle $ 578344Sobrien# 678344Sobrien 778344Sobrien# PROVIDE: fsck 878344Sobrien# REQUIRE: localswap 9126744Spjd# KEYWORD: FreeBSD nojail 1078344Sobrien 1178344Sobrien. /etc/rc.subr 1278344Sobrien 1378344Sobrienname="fsck" 1478344Sobrienstart_cmd="fsck_start" 1578344Sobrienstop_cmd=":" 1678344Sobrien 1778344Sobrienstop_boot() 1878344Sobrien{ 1978344Sobrien # Terminate the process (which may include the parent /etc/rc) 2078344Sobrien # if booting directly to multiuser mode. 2178344Sobrien # 2278344Sobrien if [ "$autoboot" = yes ]; then 2378344Sobrien kill -TERM $$ 2478344Sobrien fi 2578344Sobrien exit 1 2678344Sobrien} 2778344Sobrien 2878344Sobrienfsck_start() 2978344Sobrien{ 3098184Sgordon if [ "$autoboot" = no ]; then 3178344Sobrien echo "Fast boot: skipping disk checks." 32126862Skientzle elif [ ! -r /etc/fstab ]; then 33126862Skientzle echo "Warning! No /etc/fstab: skipping disk checks." 3478344Sobrien elif [ "$autoboot" = yes ]; then 3578344Sobrien # During fsck ignore SIGQUIT 3678344Sobrien trap : 3 3778344Sobrien 3898184Sgordon echo "Starting file system checks:" 39124618Smtm if checkyesno background_fsck; then 40124618Smtm fsck -F -p 41124618Smtm else 4298184Sgordon fsck -p 43124618Smtm fi 4498184Sgordon 4578344Sobrien case $? in 4678344Sobrien 0) 4778344Sobrien ;; 4878344Sobrien 2) 4978344Sobrien stop_boot 5078344Sobrien ;; 5178344Sobrien 4) 5278344Sobrien echo "Rebooting..." 5378344Sobrien reboot 5478344Sobrien echo "Reboot failed; help!" 5578344Sobrien stop_boot 5678344Sobrien ;; 5778344Sobrien 8) 5898184Sgordon if checkyesno fsck_y_enable; then 5998184Sgordon echo "File system preen failed, trying fsck -y." 6098184Sgordon fsck -y 6198184Sgordon case $? in 6298184Sgordon 0) 6398184Sgordon ;; 6498184Sgordon *) 6598184Sgordon echo "Automatic file system check failed; help!" 6698184Sgordon stop_boot 6798184Sgordon ;; 6898184Sgordon esac 6998184Sgordon else 7098184Sgordon echo "Automatic file system check failed; help!" 7198184Sgordon stop_boot 7298184Sgordon fi 7398184Sgordon ;; 7478344Sobrien 12) 7578344Sobrien echo "Boot interrupted." 7678344Sobrien stop_boot 7778344Sobrien ;; 7878344Sobrien 130) 7978344Sobrien stop_boot 8078344Sobrien ;; 8178344Sobrien *) 8278344Sobrien echo "Unknown error; help!" 8378344Sobrien stop_boot 8478344Sobrien ;; 8578344Sobrien esac 8678344Sobrien fi 8778344Sobrien} 8878344Sobrien 8978344Sobrienload_rc_config $name 9078344Sobrienrun_rc_command "$1" 91