From owner-cvs-all@FreeBSD.ORG Sat Oct 4 22:40:55 2003 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4A76E16A4B3; Sat, 4 Oct 2003 22:40:55 -0700 (PDT) Received: from mail.chesapeake.net (chesapeake.net [208.142.252.6]) by mx1.FreeBSD.org (Postfix) with ESMTP id 227DA43FEA; Sat, 4 Oct 2003 22:40:53 -0700 (PDT) (envelope-from jroberson@chesapeake.net) Received: from localhost (jroberson@localhost) by mail.chesapeake.net (8.11.6/8.11.6) with ESMTP id h955eq470384; Sun, 5 Oct 2003 01:40:52 -0400 (EDT) (envelope-from jroberson@chesapeake.net) Date: Sun, 5 Oct 2003 01:40:52 -0400 (EDT) From: Jeff Roberson To: Jeff Roberson In-Reply-To: <200310050535.h955ZgCT072353@repoman.freebsd.org> Message-ID: <20031005013726.I99666-100000@mail.chesapeake.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern vfs_subr.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Oct 2003 05:40:55 -0000 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 >