vrecycle() is typically called from a VFS's inactive function, which
authorMatthew Dillon <dillon@dragonflybsd.org>
Tue, 31 Jul 2007 01:14:50 +0000 (01:14 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Tue, 31 Jul 2007 01:14:50 +0000 (01:14 +0000)
commit5954ac0724046aea99de108fdb55d5f8ec875f09
tree728f78a815d5070389d94bca6d779730deea24b5
parentb1dd1cbcf011314de42d96735db0fb9641a7bc0a
vrecycle() is typically called from a VFS's inactive function, which
in turn is called when the sysref reference count transitions from
1->0xc0000000.  Fix a test that was causing the vnode to not be immediately
recycled.

msdosfs depended on the recyclement behavior due to rename-over issues -
msdosfs is not allowed to reuse an 'inode' (which is basically the position
of a directory entry in a directory) until the underlying file is entirely
reclaimed.

This also effected ufs somewhat by preventing inodes from being reused as
quickly as they could be, but ufs allocates inodes dynamically and masked
the problem.

Reported-by: walt <wa1ter@myrealbox.com>
sys/kern/vfs_subr.c