cvs commit: src/sys/ufs/ffs ffs_balloc.c
Konstantin Belousov
kib at FreeBSD.org
Wed Jul 23 14:32:52 UTC 2008
kib 2008-07-23 14:32:44 UTC
FreeBSD src repository
Modified files:
sys/ufs/ffs ffs_balloc.c
Log:
SVN rev 180758 on 2008-07-23 14:32:44Z by kib
The ffs_balloc_ufs{1,2} functions call bdwrite() while having several
vnode buffers locked at once. In particular, there are indirect buffers
among locked ones. The bdwrite() may start the flushing to keep dirty
buffer list at the bounds. If any buffer on the dirty list requires
translation from logical to physical block number, code may ends up
trying to lock an indirect buffer already locked in ffs_balloc_ufsX.
Prevent the bdflush() activity when several buffers are locked at once
by setting the TDP_INBDFUSH for the problematic code blocks.
Reported and tested by: pho, Josef Buchsteiner at Juniper
In collaboration with: kan
MFC after: 1 month
Revision Changes Path
1.54 +22 -2 src/sys/ufs/ffs/ffs_balloc.c
More information about the cvs-src
mailing list