74 lines
1.3 KiB
Plaintext
Executable File
74 lines
1.3 KiB
Plaintext
Executable File
#!/sbin/runscript
|
|
# Copyright 2007-2008 Roy Marples <roy@marples.name>
|
|
# All rights reserved. Released under the 2-clause BSD license.
|
|
|
|
description="Check filesystems according to /etc/fstab for errors and \
|
|
optionally repair them."
|
|
|
|
depend()
|
|
{
|
|
need checkroot
|
|
after modules
|
|
keywords notimeout
|
|
}
|
|
|
|
do_checkfs()
|
|
{
|
|
local retval=0 mode="-p" opts= parts=
|
|
|
|
ebegin "Checking all filesystems"
|
|
|
|
if [ "${RC_UNAME}" = "Linux" ]; then
|
|
opts="-A -C0 -R -T"
|
|
else
|
|
parts="$(fstabinfo --passno ">1")"
|
|
if [ -z "${parts}" ]; then
|
|
eend 0
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
fsck ${opts} ${mode} ${parts}
|
|
retval=$?
|
|
|
|
if [ ${retval} -eq 0 ]; then
|
|
eend 0
|
|
elif [ ${retval} -eq 1 ]; then
|
|
ewend 1 "Filesystem errors corrected."
|
|
retval=0
|
|
elif [ ${retval} -eq 2 ]; then
|
|
ewend 1 "System should be rebooted"
|
|
elif [ ${retval} -eq 8 ]; then
|
|
ewend 1 "Operational error, continuing"
|
|
retval=0
|
|
else
|
|
if yesno ${rc_force_auto:-${RC_FORCE_AUTO}}; then
|
|
eend 2 "Fsck could not correct all errors, rerunning"
|
|
fsck ${opts} -y ${parts}
|
|
retval=$?
|
|
eend ${retval}
|
|
fi
|
|
|
|
if [ ${retval} -gt 3 ]; then
|
|
eend 2 "Fsck could not correct all errors, manual repair needed"
|
|
exec rc-abort || exit 1
|
|
fi
|
|
fi
|
|
|
|
return ${retval}
|
|
}
|
|
|
|
start()
|
|
{
|
|
do_checkfs
|
|
}
|
|
|
|
stop()
|
|
{
|
|
# fsck on shutdown if we need to
|
|
if yesno "${fsck_shutdown:-${FSCK_SHUTDOWN}}"; then
|
|
do_checkfs
|
|
fi
|
|
return 0
|
|
}
|