Softupdates overflows, KSTACK_PAGES and lost+found overflows

Kris Kennaway kris at FreeBSD.org
Fri Mar 18 11:46:44 PST 2005


I have been running with KSTACK_PAGES=4 for a year or more to avoid
kstack overflows in the softupdates code.  These can have very nasty
effects on the filesystem and require extraordinary effort to recover
from.  In particular:

[...]
UNREF FILE  I=2644995  OWNER=root MODE=100644
SIZE=68792 MTIME=Mar 18 16:14 2005
RECONNECT? yes

SORRY. NO SPACE IN lost+found DIRECTORY
UNEXPECTED SOFT UPDATE INCONSISTENCY



CLEAR? yes
[...]
CLEAR? yes

** Phase 5 - Check Cyl groups
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? yes

SUMMARY INFORMATION BAD
SALVAGE? yes

BLK(S) MISSING IN BIT MAPS
SALVAGE? yes

1570569 files, 7143221 used, 5848860 free (440012 frags, 676106 blocks, 3.4% fragmentation)

***** FILE SYSTEM WAS MODIFIED *****

At this point the system allows me to mount the filesystem, even
though it is still corrupted.

In order to actually get a clean filesystem I have to move aside
lost+found and recreate it, and then rerun fsck.  This needs to be
repeated up to a dozen times until all of the errors are repaired.

Recently I decreased KSTACK_PAGES to 3 to see if I could provoke the
bug again.  I could :) This means that KSTACK_PAGES=4 is necessary to
provide reasonable protection against the problem.  Please commit this
change for 5.4-R, because I'm sure other people in the real world will
be able to duplicate my disk load.  Also, fsck needs to be fixed to
not pretend that the filesystem is clean when it knows it hasn't been
able to fix all of the problems because lost+found filled up.

Kris

--
In God we Trust -- all others must submit an X.509 certificate.
    -- Charles Forsythe <forsythe at alum.mit.edu>


More information about the freebsd-fs mailing list