fsck revision 124618
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 124618 2004-01-17 10:40:45Z mtm $ 578344Sobrien# 678344Sobrien 778344Sobrien# PROVIDE: fsck 878344Sobrien# REQUIRE: localswap 9124616Smtm# KEYWORD: FreeBSD 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." 3278344Sobrien elif [ "$autoboot" = yes ]; then 3378344Sobrien # During fsck ignore SIGQUIT 3478344Sobrien trap : 3 3578344Sobrien 3698184Sgordon echo "Starting file system checks:" 37124618Smtm if checkyesno background_fsck; then 38124618Smtm fsck -F -p 39124618Smtm else 4098184Sgordon fsck -p 41124618Smtm fi 42124618Smtm ;; 4398184Sgordon 4478344Sobrien case $? in 4578344Sobrien 0) 4678344Sobrien ;; 4778344Sobrien 2) 4878344Sobrien stop_boot 4978344Sobrien ;; 5078344Sobrien 4) 5178344Sobrien echo "Rebooting..." 5278344Sobrien reboot 5378344Sobrien echo "Reboot failed; help!" 5478344Sobrien stop_boot 5578344Sobrien ;; 5678344Sobrien 8) 5798184Sgordon if checkyesno fsck_y_enable; then 5898184Sgordon echo "File system preen failed, trying fsck -y." 5998184Sgordon fsck -y 6098184Sgordon case $? in 6198184Sgordon 0) 6298184Sgordon ;; 6398184Sgordon *) 6498184Sgordon echo "Automatic file system check failed; help!" 6598184Sgordon stop_boot 6698184Sgordon ;; 6798184Sgordon esac 6898184Sgordon else 6998184Sgordon echo "Automatic file system check failed; help!" 7098184Sgordon stop_boot 7198184Sgordon fi 7298184Sgordon ;; 7378344Sobrien 12) 7478344Sobrien echo "Boot interrupted." 7578344Sobrien stop_boot 7678344Sobrien ;; 7778344Sobrien 130) 7878344Sobrien stop_boot 7978344Sobrien ;; 8078344Sobrien *) 8178344Sobrien echo "Unknown error; help!" 8278344Sobrien stop_boot 8378344Sobrien ;; 8478344Sobrien esac 8578344Sobrien fi 8678344Sobrien} 8778344Sobrien 8878344Sobrienload_rc_config $name 8978344Sobrienrun_rc_command "$1" 90