fsck exits with error status, even though no errors are found

JD jd1008 at gmail.com
Tue Sep 27 00:55:54 UTC 2011


On 09/26/2011 01:49 PM, Rick Stevens wrote:
> On 09/26/2011 01:25 PM, JD wrote:
>> On 09/26/2011 12:09 PM, Rick Stevens wrote:
>>> On 09/26/2011 11:59 AM, JD wrote:
>>>> kernel-2.6.35.14-96.fc14.i686
>>>>
>>>> During boot, when the time comes for fsck'ing
>>>> the file systems, whatever script is doing that,
>>>> is exiting with an error status, even though no
>>>> errors are displayed, and I am prompted to either
>>>> enter the root password, or type Contrl-D to continue.
>>>> Cntrl-D simply reboots. Entering the root password,
>>>> and running fsck manually to check all filesystems in fstab,
>>>> yields that all is well, no errors are found, and the exit
>>>> status is 0.
>>>>
>>>> Would appreciate some info on identifying the script that
>>>> does the fsck during boot.
>>> /etc/rc.d/rc.sysinit is the guy and it'll force an fsck if it sees
>>> a file called "/forcefsck" or "/.autofsck" in the root of the
>>> filesystem or if there's a "forcefsck" on the command line of the kernel
>>> (check your /etc/grub/grub.conf file).
>> Thanks Rick.
>>
>> I checked /etc/rc.d/rc.sysinit
>> and I see that it does check for the presence of files like:
>>
>> if [ -f /fsckoptions ]
>>
>>
>> if [ -f /forcefsck ]
>>
>>
>> elif [ -f /.autofsck ]
> Remember you need the "-a" option to ls to see files that begin with a
> dot, e.g. "ls -a /.autofsck".  Just making sure.
>
>> [ -f /etc/sysconfig/autofsck ]
>>
>> and I have none of these files.
>>
>> I checked /boot/grub/grub.conf and I see
>> no presence of any string like fsck or force
>> or auto in it.
>>
>> The only script I found that invokes /etc/rc.d/rc.sysinit is
>> /etc/init/rcS.conf, and it is not passing any args to it.
>>
>> I wounder if this maybe a bash problem?
> Do you have other filesystems on other partitions that might be
> triggering this?  Check your /etc/fstab file and see if any entries
> have stuff other than "0" as the last field.  Generally, "/" should
> have a "1" as the last field, "/boot" should have a "2", the rest (if
> any) should have "0".
>
> Also note that the system may force an fsck if you've exceeded the
> "mounts between fsck runs" or "interval-between-checks" set on ext2/3/4
> filesystems (and others, I think) via the "tune2fs -c" or "tune2fs -i"
> commands.  You could run "tune2fs -l" on the block device holding your
> root filesystem to see what values are set currently.
>
> Just an idea.
> ----------------------------------------------------------------------
> - Rick Stevens, Systems Engineer, C2 Hosting          ricks at nerd.com -
> - AIM/Skype: therps2        ICQ: 22643734            Yahoo: origrps2 -
> -                                                                    -
> -    First Law of Work:                                              -
> -    If you can't get it done in the first 24 hours, work nights.    -
> ----------------------------------------------------------------------
If this helps any, I instrumented /etc/rc.d/rc.sysinit
and added to it to print the full fsck command being issued
and the value of the exit status of fsck.
Well, here's what my instrumentation printed:

fsck -T -t noopts=_netdev -A $fsckoptions <<<<<
rc = 16 <<<<<

return value of 16? And yet no fsck problems of any kind??

So is this an fsck bug??
Has anyone else come across this?

------------------ excerpt from /etc/rc.d/rc.sysinit--------------------
.
.
.

if [ -z "$fastboot" -a "$READONLY" != "yes" ]; then

         STRING=$"Checking filesystems"
     echo $STRING
     fsck -T -t noopts=_netdev -A $fsckoptions
     rc=$?

     if [ "$rc" -eq "0" ]; then
         success "$STRING"
         echo
     elif [ "$rc" -eq "1" ]; then
             passed "$STRING"
         echo
     elif [ "$rc" -eq "2" -o "$rc" -eq "3" ]; then
         echo $"Unmounting file systems"
         umount -a
         mount -n -o remount,ro /
         echo $"Automatic reboot in progress."
         reboot -f
         fi

         # A return of 4 or higher means there were serious problems.
     if [ $rc -gt 1 ]; then
         [ -n "$PLYMOUTH" ] && plymouth --hide-splash

         failure "$STRING"
         echo
         echo
         echo $"*** An error occurred during the file system check."
         echo $"*** Dropping you to a shell; the system will reboot"
         echo $"*** when you leave the shell."

                 str=$"(Repair filesystem)"
         PS1="$str \# # "; export PS1
         [ "$SELINUX_STATE" = "1" ] && disable_selinux
         sulogin

         echo $"Unmounting file systems"
         umount -a
         mount -n -o remount,ro /
         echo $"Automatic reboot in progress."
         reboot -f
     elif [ "$rc" -eq "1" ]; then
         _RUN_QUOTACHECK=1
     fi
fi



More information about the users mailing list