Whenever fsck.jfs returns an error code of 1 (no idea why it doesn't return 0, since it seems alright), /etc/init.d/checkfs seems to think a serious error has occurred. Reproducible: Always Steps to Reproduce: 1. 2. 3. Expected Results: While the fsck manual seems to indicate error codes 4 and upwards are critical, /etc/init.d/checkfs in it's current incarnation includes 1 among these numbers. That is, numbers *greater than* 1 and less than 4 are non-critical. Shouldn't it be *greater than or equal to* 1?
This is fixed in .10 already, please try baselayout-1.8.6.10-r1: ------------------ checkfs ------------------------- <--snip--> if [ "${retval}" -eq 0 ] then eend 0 elif [ "${retval}" -gt 1 -a "${retval}" -lt 4 ] then ewend 1 "Filesystem errors corrected." # Everything should be ok, so return a pass return 0 else eend 2 "Fsck could not correct all errors, manual repair needed" /sbin/sulogin ${CONSOLE} fi <--snip-->
I am using .10-r1 (latest and greatest(?)). Shouldn't "elif [ "${retval}" -gt 1 -a "${retval}" -lt 4 ]" be replaced with elif [ "${retval}" -ge 1 -a "${retval}" -lt 4 ]"? That is, '-ge' seems like the correct option to me. At least it fixed the problem I had (whats the '-a' option for btw, can't find it consulting man test).
Right, is's still wrong. :-) I'm running with baselayout-1.8.6.10-r1, and checkfs contains the following code: if [ "${retval}" -eq 0 ] then eend 0 elif [ "${retval}" -gt 1 -a "${retval}" -lt 4 ] then ewend 1 "Filesystem errors corrected." # Everything should be ok, so return a pass return 0 else eend 2 "Fsck could not correct all errors, manual repair needed" /sbin/sulogin ${CONSOLE} fi Return value 1 is obviously missed in the 'elif' clause, which is wrong. Please correct it. It costed me an unnecessary trip to the data center already. Regards, Toon.