ugh.book

(singke) #1
UFS: The Root of All Evil 273

Only the Most Perfect Disk Pack Need Apply
One common problem with Unix is perfection: while offering none of its
own, the operating system demands perfection from the hardware upon
which it runs. That’s because Unix programs usually don’t check for hard-
ware errors—they just blindly stumble along when things begin to fail,
until they trip and panic. (Few people see this behavior nowadays, though,
becuase most SCSI hard disks do know how to detect and map out blocks
as the blocks begin to fail.)

The dictionary defines panic as “a sudden overpowering fright; especially a
sudden unreasoning terror often accompanied by mass flight.” That’s a
pretty good description of a Unix panic: the computer prints the word
“panic” on the system console and halts, trashing your file system in the
process. We’ve put a list of some of the more informative(?) ones in
Figure 4.

The requirement for a perfect disk pack is most plainly evident in the last
two of these panic messages. In both of these cases, UFS reads a block of
data from the disk, performs an operation on it (such as decreasing a num-

Message Meaning


panic: fsfull The file system is full (a write failed), but
Unix doesn’t know why.


panic: fssleep fssleep() was called for no apparent rea-
son.


panic: alloccgblk: cyl groups
corrupted


Unix couldn’t determine the requested
disk cylinder from the block number.

panic: DIRBLKSIZ > fsize A directory file is smaller than the mini-
mum directory size, or something like
that.


dev = 0xXX, block = NN, fs = ufs
panic: free_block: freeing free
block


Unix tried to free a block that was already
on the free list. (You would be surprised
how often this happens. Then again,
maybe you wouldn’t.)

panic: direnter: target
directory link count


Unix accidentally lowered the link count
on a directory to zero or a negative num-
ber.

FIGURE 4. Unix File System Error Messages.
Free download pdf