summaryrefslogtreecommitdiff
path: root/init.d/fsck
diff options
context:
space:
mode:
Diffstat (limited to 'init.d/fsck')
-rw-r--r--init.d/fsck37
1 files changed, 37 insertions, 0 deletions
diff --git a/init.d/fsck b/init.d/fsck
new file mode 100644
index 0000000..01c92a6
--- /dev/null
+++ b/init.d/fsck
@@ -0,0 +1,37 @@
+#!/sbin/runscript
+# Copyright 2007-2008 Roy Marples <roy@marples.name>
+# All rights reserved. Released under the 2-clause BSD license.
+
+description="Check and repair filesystems according to /etc/fstab"
+
+depend()
+{
+ need swap
+ after clock modules
+ keywords notimeout
+}
+
+start()
+{
+ local retval=0 opts= root=
+ if [ "${RC_UNAME}" = "Linux" ]; then
+ opts="${opts} -A -C0 -T"
+ if echo 2>/dev/null >/.test.$$; then
+ rm -f /.test.$$
+ opts="${opts} -R"
+ fi
+ fi
+
+ ebegin "Checking local filesystems"
+ fsck -p ${opts}
+ case $? in
+ 0) eend 0; return 0;;
+ 1) ewend 1 "Filesystems repaired"; return 0;;
+ 2|4) ewend 1 "Filesystems repaired, but reboot needed"
+ reboot; exec rc-abort; return 1;;
+ 8) ewend 1 "Operational error"; return 0;;
+ 12) ewend 1 "fsck interupted"; return 1;;
+ *) eend 2 "Filesystems couldn't be fixed"
+ exec rc-abort; return 1;;
+ esac
+}