git: kernel - Fix issue in UFS related to new nvtruncbuf() API use
dillon at crater.dragonflybsd.org
Fri Jan 29 11:02:00 PST 2010
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri Jan 29 10:55:34 2010 -0800
kernel - Fix issue in UFS related to new nvtruncbuf() API use
* When a UFS truncation must downsize a block it must sometimes call
FSYNC twice, the second time to flush out softdep block dependencies
related to the original indirect block.
UFS depends on the first FSYNC call to prevent the buffer cache buffer
straddling the new file/directory EOF from becoming dirty. However,
nvtruncbuf() defeats this by re-dirtying the bp.
The solution is to simply undirty the bp prior to the second FSYNC,
which works fine since it will be written out later with a b*write()
* Fixes 'locking against myself' panic w/UFS.
Reported-by: Stathis Kamperis <ekamperi at gmail.com>
Summary of changes:
sys/vfs/ufs/ffs_inode.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
DragonFly BSD source repository
More information about the Commits