diff --git a/ChangeLog b/ChangeLog index f32ff96e..6ee3f997 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog for Gentoo System Intialization ("rc") scripts # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPLv2 + 26 Apr 2007; Roy Marples : + + checkroot and checkfs now use more friendly generic options, #116016. + 25 Apr 2007; Roy Marples : We now have an alternative to buffering stdout and stderr. diff --git a/init.d/checkfs b/init.d/checkfs index 7531ab78..45484939 100755 --- a/init.d/checkfs +++ b/init.d/checkfs @@ -4,29 +4,30 @@ depend() { need checkroot - use volumes after modules } do_checkfs() { - local retval=0 + local retval=0 mode="-p" opts= parts= ebegin "Checking all filesystems" - if [ "${RC_UNAME}" = "Linux" ] ; then - if get_bootparam "forcefsck" ; then - ewarn "A full fsck has been forced" - fsck -C0 -T -R -A -a -f - else - fsck -C0 -T -R -A -a - fi - retval=$? - else - local parts="$(fstabinfo --passno ">1")" - if [ -n "${parts}" ] ; then - fsck -p ${parts} - retval=$? - fi + + + if [ -e /forcefsck ] || get_bootparam "forcefsck" ; then + ewarn "A full fsck has been forced" + mode="-f" fi + + if [ "${RC_UNAME}" = "Linux" ] ; then + opts="-A -C0 -R -T" + else + parts="$(fstabinfo --passno ">1")" + [ -z "${parts}" ] && return 0 + fi + + fsck ${opts} ${mode} ${parts} + retval=$? + if [ ${retval} -eq 0 ] ; then eend 0 elif [ ${retval} -eq 1 ] ; then @@ -40,13 +41,9 @@ do_checkfs() { else if [ "${RC_FORCE_AUTO}" = "yes" ] ; then eend 2 "Fsck could not correct all errors, rerunning" - if [ "${RC_UNAME}" = "Linux" ] ; then - fsck -C0 -T -R -A -y - else - fsck -y - fi + fsck ${opts} -y ${parts} retval=$? - eend $? + eend ${retval} fi if [ ${retval} -gt 3 ] ; then @@ -54,7 +51,9 @@ do_checkfs() { exec rc-abort || exit 1 fi fi - + + [ ${retval} = 0 -a -e /forcefsck ] && rm /forcefsck + return ${retval} } diff --git a/init.d/checkroot b/init.d/checkroot index 2b3c0de3..a369fe50 100755 --- a/init.d/checkroot +++ b/init.d/checkroot @@ -32,7 +32,8 @@ do_mtab() { } start() { - local retval=0 + local retval=0 opts="-F" + [ "${RC_UNAME}" = "Linux" ] && opts="-T -C0" # Don't bother doing a fsck on these if [ -n "${CDBOOT}" ] || is_net_fs / || is_union_fs / ; then @@ -45,29 +46,18 @@ start() { return 0 fi - if get_bootparam "forcefsck" ; then + if [ -e /forcefsck ] || get_bootparam "forcefsck" ; then ebegin "Checking root filesystem (full fsck forced)" - if [ "${RC_UNAME}" = "Linux" ] ; then - fsck -C -a -f / - else - fsck -F / - fi + fsck ${opts} -f / # /forcefsck isn't deleted because checkfs needs it. # it'll be deleted in that script. retval=$? else # Obey the fs_passno setting for / (see fstab(5)) - # - find the / entry - # - make sure we have 6 fields - # - see if fs_passno is something other than 0 local pass=$(fstabinfo --passno /) if [ ${pass:-0} != "0" ] ; then ebegin "Checking root filesystem" - if [ "${RC_UNAME}" = "Linux" ] ; then - fsck -C -T -a / - else - fsck -p -F / - fi + fsck ${opts} -p / retval=$? else ebegin "Skipping root filesystem check" "(fstab's passno == 0)" @@ -92,15 +82,11 @@ start() { sleep 10 fi einfo "Rebooting" - /sbin/reboot -f + reboot -f else if [ "${RC_FORCE_AUTO}" = "yes" ] ; then eend 2 "Rerunning fsck in force mode" - if [ "${RC_UNAME}" = "Linux" ] ; then - fsck -y -C -T / - else - fsck -y / - fi + fsck ${opts} -y / retval=$? else eend 2 "Filesystem couldn't be fixed :("