DragonFly commits List (threaded) for 2006-02
cvs commit: src/sys/kern vfs_cluster.c
dillon 2006/02/21 10:46:56 PST
DragonFly src repository
bioops.io_start() was being called in a situation where the buffer could
be brelse()'d afterwords instead of I/O being initiated. When this occurs,
the buffer may contain softupdates-modified data which is never reverted,
resulting in serious filesystem corruption. When io_start is called on a
buffer, I/O MUST be initiated and terminated with a biodone() or the buffer's
data may not be properly reverted.
Solve the problem by moving the io_start() call a little further on in the
code, after the potential brelse().
There is a possibility that this bug is responsible for the 'dirbad' panics
often reported in DragonFly and FreeBSD circles.
Revision Changes Path
1.16 +7 -6 src/sys/kern/vfs_cluster.c