cvs commit: src/sys/vfs/ufs ffs_alloc.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Aug 14 11:54:23 PDT 2005
dillon 2005/08/14 11:53:43 PDT
DragonFly src repository
Modified files:
sys/vfs/ufs ffs_alloc.c
Log:
Fix an inode bitmap scanning bug. Due to an error in the length adjustment
the first scanned byte of the inode bitmap could be checked twice under a
specific and rare but intentionally reproducable set of conditions. This
resulted in a sanity check failing and a panic. The required conditions are:
* Very few available inodes in the cylinder group.
* All available inodes are still in the inode hashmap (related vnodes have
not been completely destroyed yet) and thus skipped.
* The first scanned byte (indexed by the rotor) contains one of these
not-quite-free inodes.
It should be noted that even though this error exists in FreeBSD-4, the
conditions never occur to trigger it becaues FreeBSD-4 will reuse a vnode
that is still not completely destroyed. DragonFly does not reuse such vnodes
because they represent a weird and fairly rare code situation that could
lead to bugs, and because attempting to reuse such vnodes/inodes represent
potential stall points.
Found-with: blogbench script provided by Tomaz Borstnar.
Revision Changes Path
1.14 +25 -20 src/sys/vfs/ufs/ffs_alloc.c
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/ffs_alloc.c.diff?r1=1.13&r2=1.14&f=u
More information about the Commits
mailing list