From FreeBSD [Terry Lambert]:
authortholo <tholo@openbsd.org>
Thu, 20 Feb 1997 06:03:04 +0000 (06:03 +0000)
committertholo <tholo@openbsd.org>
Thu, 20 Feb 1997 06:03:04 +0000 (06:03 +0000)
commite931c1212d7bb5ceaf946ef535851f0770284c1c
tree802ccbb76d97054ec9790694d61c0cc350f7bd2c
parent46b4e61acf6e613345e740c4790ac26a6f35d184
From FreeBSD [Terry Lambert]:

The following small diff fixes the annoying fsck bug that causes it to
need to be run twice to end up with correct reference counts for inodes
for directories that had subdirectories relocated into the lost+found
directory.

I found the need to rerun *extremely* annoying.  This fix causes the
count to be correctly adjusted later in pass 4 by correctly stating
the parent reference count.

Note that the parent reference count is incremented when the directory
entry is made (for ".."), but is not really there in the case of a
directory that does not make an entry in its parent dir.

This can be tested by waiting for the inode sync after cd'ing from a
shell into a test fs.  Then you "mkdir xxx yyy zzz", wait a second,
and hit the machine reset button.
sbin/fsck_ffs/dir.c