Joerg Sonnenberger wrote up a proposal for background fsck, which he posted to the kernel discussion group. I”m pasting it wholesale.
(Matt Dillon has indicated he would prefer a journaling filesystem.)
ATM DragonFly forces a full fsck for before allowing a non-forced read-write
mount of a unclean filesystem. Since this filesystem checks can take quite
a long time, alternatives are highly desired.
The first alternative is using a journal for all meta-data updates. That’s
what most Linux filesystems are doing. The advantage is almost no time
needed to bring a uncleanly unmounted filesystem back into a working state.
The disadvantage is a steady slow down for all meta-data updates.
The second alternative is provided by FreeBSD 5. It uses the soft updates
code to provide a consistent filesystem even in case of power failure etc.
Therefore you can mount a filesystem with soft updates instantly. Without
further processing the only disadvantage is some missing space. In detail
does the softdep code guaranty that the only incorrections on the fs are
free blocks and inodes still marked as in use. To garbage collect those
ressources FreeBSD 5 uses the filesystem snapshot mechanism to provide
a consistent and stable view of the filesystem for fsck. This allows the
filesystem to be used without any performance penalty as soon as the
background fsck has completed.
While the snapshot code is useful for other things as well, e.g. backups,
it is IMO far to general for this special application. Esp. since snapshots
are persistent across reboots and therefore disk backed they can result
in quite some unnecessary I/O load.