From owner-freebsd-current Sun Jun 27 19:47: 9 1999 Delivered-To: freebsd-current@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [209.157.86.2]) by hub.freebsd.org (Postfix) with ESMTP id 8A5F915102 for ; Sun, 27 Jun 1999 19:47:06 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id TAA16796; Sun, 27 Jun 1999 19:46:41 -0700 (PDT) (envelope-from dillon) Date: Sun, 27 Jun 1999 19:46:41 -0700 (PDT) From: Matthew Dillon Message-Id: <199906280246.TAA16796@apollo.backplane.com> To: Peter Wemm Cc: current@FreeBSD.ORG, mckusick@mckusick.com Subject: Re: BUF_LOCK() related panic.. References: <19990627224713.A61D781@overcee.netplex.com.au> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG :Yep, I was aware of this before, but I didn't rip it out since I didn't :know what Kirk's intentions were. I'm assuming he's got his experience :with making the BSD/OS vfs reentrant in mind, so I don't want to break :anything that gets closer to that. A seperate test and then lock would :not be reentrant. (Sure, there are far bigger problems than this, but :every bit helps when we get there) I think that code runs at splbio(), so it would still work. But your right -- making the buffer cache code operate in an SMP environment would require a single atomic lock attempt. Still, to get to that point will take a huge amount of continued work so I would not worry about it too much now. :Actually, I think there is another set if missing BUF_KERNPROC() calls, :cluster_callback() frees buffers, so all buffers submitted with it had :better be reassigned. This is (I think) part of the problem that :cluster_wbuild() is hitting - things were supposed to have been reassigned :but are still hanging onto the current process. :... :-- :Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au : It could be. I've suggested to Kirk that he remove all the BUF_KERNPROC() stuff and instead reassign the lock in biodone(). My qlock stuff doesn't require lock reassign on release, so that could be why it isn't having problems while the lockmgr() stuff is. -Matt Matthew Dillon To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message