#!/sbin/runscript # Copyright 2007-2008 Roy Marples # All rights reserved 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 }