cvs commit: src/sys/kern vfs_subr.c
Jeff Roberson
jroberson at chesapeake.net
Sat Oct 4 22:40:55 PDT 2003
I tested this by doing a buildworld on a machine with maxvnodes set to
1000. Needless to say, there was plenty of recycling. This change in
particular provides a clear path for filesystems to follow when
manipulating vnodes that are found on non usecounted lists.
As per usual, I haven't moved giant at all, I'm just spinning my wheels.
;-)
Cheers,
Jeff
On Sat, 4 Oct 2003, Jeff Roberson wrote:
> jeff 2003/10/04 22:35:42 PDT
>
> FreeBSD src repository
>
> Modified files:
> sys/kern vfs_subr.c
> Log:
> - Rename vcanrecycle() to vtryrecycle() to reflect its new role.
> - In vtryrecycle() try to vgonel the vnode if all of the previous checks
> passed. We won't vgonel if someone has either acquired a hold or usecount
> or started the vgone process elsewhere. This is because we may have been
> removed from the free list while we were inspecting the vnode for
> recycling.
> - The VI_TRYLOCK stops two threads from entering getnewvnode() and recycling
> the same vnode. To further reduce the likelyhood of this event, requeue
> the vnode on the tail of the list prior to calling vtryrecycle(). We can
> not actually remove the vnode from the list until we know that it's
> going to be recycled because other interlock holders may see the VI_FREE
> flag and try to remove it from the free list.
> - Kill a bogus XXX comment. If XLOCK is set we shouldn't wait for it
> regardless of MNT_WAIT because the vnode does not actually belong to
> this filesystem.
>
> Revision Changes Path
> 1.464 +32 -26 src/sys/kern/vfs_subr.c
>
More information about the cvs-src
mailing list