Module Name:    src
Committed By:   christos
Date:           Fri Jul 10 20:02:21 UTC 2009

Modified Files:
        src/etc: rc.subr
        src/etc/rc.d: fsck fsck_root

Log Message:
1. centralize the fsck error handling
2. don't check if root is on nfs
3. reboot -n if root was modified as the manual page suggests


To generate a diff of this commit:
cvs rdiff -u -r1.75 -r1.76 src/etc/rc.subr
cvs rdiff -u -r1.9 -r1.10 src/etc/rc.d/fsck
cvs rdiff -u -r1.2 -r1.3 src/etc/rc.d/fsck_root

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/etc/rc.subr
diff -u src/etc/rc.subr:1.75 src/etc/rc.subr:1.76
--- src/etc/rc.subr:1.75	Mon Apr 27 23:03:52 2009
+++ src/etc/rc.subr	Fri Jul 10 16:02:21 2009
@@ -1,4 +1,4 @@
-# $NetBSD: rc.subr,v 1.75 2009/04/28 03:03:52 reed Exp $
+# $NetBSD: rc.subr,v 1.76 2009/07/10 20:02:21 christos Exp $
 #
 # Copyright (c) 1997-2004 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -930,4 +930,35 @@
 	fi
 }
 
+#
+# handle_fsck_error fsck_exit_code
+#	Take action depending on the return code from fsck.
+#
+handle_fsck_error()
+{
+	case $1 in
+	0)	# OK
+		return
+		;;
+	2)	# Needs re-run, still fs errors
+		echo "File system still has errors; re-run fsck manually!"
+		;;
+	4)	# Root modified
+		echo "Root filesystem was modified, rebooting ..."
+		reboot -n
+		echo "Reboot failed; help!"
+		;;
+	8)	# Check failed
+		echo "Automatic file system check failed; help!"
+		;;
+	12)	# Got signal
+		echo "Boot interrupted."
+		;;
+	*)
+		echo "Unknown error $1; help!"
+		;;
+	esac
+	stop_boot
+}
+
 _rc_subr_loaded=:

Index: src/etc/rc.d/fsck
diff -u src/etc/rc.d/fsck:1.9 src/etc/rc.d/fsck:1.10
--- src/etc/rc.d/fsck:1.9	Sun Mar  2 16:31:30 2008
+++ src/etc/rc.d/fsck	Fri Jul 10 16:02:21 2009
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: fsck,v 1.9 2008/03/02 21:31:30 tron Exp $
+# $NetBSD: fsck,v 1.10 2009/07/10 20:02:21 christos Exp $
 #
 
 # PROVIDE: fsck
@@ -23,30 +23,7 @@
 
 	echo "Starting file system checks:"
 	fsck $fsck_flags
-	local fsck_error="$?"
-	case $fsck_error in
-	0)	# OK
-		return
-		;;
-	2)	# Needs re-run, still fs errors
-		echo "file systems still have errors; re-run fsck manually!"
-		;;
-	4)	# Root modified
-		echo "Root filesystem was modified, rebooting ..."
-		reboot
-		echo "Reboot failed; help!"
-		;;
-	8)	# Check failed
-		echo "Automatic file system check failed; help!"
-		;;
-	12)	# Got signal
-		echo "Boot interrupted."
-		;;
-	*)
-		echo "Unknown error $fsck_error; help!"
-		;;
-	esac
-	stop_boot
+	handle_fsck_error "$?"
 }
 
 load_rc_config $name

Index: src/etc/rc.d/fsck_root
diff -u src/etc/rc.d/fsck_root:1.2 src/etc/rc.d/fsck_root:1.3
--- src/etc/rc.d/fsck_root:1.2	Tue Apr 28 09:08:51 2009
+++ src/etc/rc.d/fsck_root	Fri Jul 10 16:02:21 2009
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: fsck_root,v 1.2 2009/04/28 13:08:51 apb Exp $
+# $NetBSD: fsck_root,v 1.3 2009/07/10 20:02:21 christos Exp $
 #
 
 # PROVIDE: fsck_root
@@ -32,37 +32,19 @@
 			echo "Not checking /: fs_passno = 0 in ${fstab_file}"
 			return
 			;;
-		*:/:*)	break
+		*:/:*)	case "${fs_spec}" in
+			*:*)
+				echo "Not checking /: nfs mounted"
+				return
+				;;
+			esac
 			;;
 		esac
 	done <"${fstab_file}"
 
 	echo "Starting root file system check:"
 	fsck $fsck_flags /
-	local fsck_error="$?"
-	case $fsck_error in
-	0)	# OK
-		return
-		;;
-	2)	# Needs re-run, still fs errors
-		echo "file system still has errors; re-run fsck manually!"
-		;;
-	4)	# Root modified
-		echo "Root filesystem was modified, rebooting ..."
-		reboot
-		echo "Reboot failed; help!"
-		;;
-	8)	# Check failed
-		echo "Automatic file system check failed; help!"
-		;;
-	12)	# Got signal
-		echo "Boot interrupted."
-		;;
-	*)
-		echo "Unknown error $fsck_error; help!"
-		;;
-	esac
-	stop_boot
+	handle_fsck_error "$?"
 }
 
 load_rc_config $name

Reply via email to