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