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