From owner-cvs-all Sat Feb 2 11:27:26 2002 Delivered-To: cvs-all@freebsd.org Received: from gw.nectar.cc (gw.nectar.cc [208.42.49.153]) by hub.freebsd.org (Postfix) with ESMTP id DD2FF37B404; Sat, 2 Feb 2002 11:27:21 -0800 (PST) Received: by gw.nectar.cc (Postfix, from userid 1001) id 6105446; Sat, 2 Feb 2002 13:27:21 -0600 (CST) Date: Sat, 2 Feb 2002 13:27:21 -0600 From: "Jacques A. Vidrine" To: Dag-Erling Smorgrav Cc: se@FreeBSD.org, Kirk McKusick , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern vfs_subr.c Message-ID: <20020202132721.A65496@hellblazer.nectar.cc> Mail-Followup-To: "Jacques A. Vidrine" , Dag-Erling Smorgrav , se@FreeBSD.org, Kirk McKusick , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org References: <200202020149.g121nJI67647@freefall.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from des@ofug.org on Sat, Feb 02, 2002 at 08:22:04PM +0100 X-Url: http://www.nectar.cc/ Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Sat, Feb 02, 2002 at 08:22:04PM +0100, Dag-Erling Smorgrav wrote: > Kirk McKusick writes: > > Log: > > In the routines vrele() and vput(), we must lock the vnode and > > call VOP_INACTIVE before placing the vnode back on the free list. > > Otherwise there is a race condition on SMP machines between > > getnewvnode() locking the vnode to reclaim it and vrele() > > locking the vnode to inactivate it. This window of vulnerability > > becomes exaggerated in the presence of filesystems that have > > been suspended as the inactive routine may need to temporarily > > release the lock on the vnode to avoid deadlock with the syncer > > process. > > I think this might be the cause of the panic some people saw in procfs > a couple of months ago; getvnode() would sometimes return a vnode that > had already been reclaimed, and fstatfs() would dereference a NULL > pointer. This was "fixed" by adding an extra check to fstatfs() in > rev 1.216 of vfs_syscalls.c; this check is probably unnecessary now. Perhaps Stefan can comment on this. He was able to reproduce the problem at will. Stefan? -- Jacques A. Vidrine http://www.nectar.cc/ NTT/Verio SME . FreeBSD UNIX . Heimdal Kerberos jvidrine@verio.net . nectar@FreeBSD.org . nectar@kth.se To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message