From owner-freebsd-current Sun Jun 27 2:22:56 1999 Delivered-To: freebsd-current@freebsd.org Received: from overcee.netplex.com.au (overcee.netplex.com.au [202.12.86.7]) by hub.freebsd.org (Postfix) with ESMTP id 555F215088 for ; Sun, 27 Jun 1999 02:22:51 -0700 (PDT) (envelope-from peter@netplex.com.au) Received: from netplex.com.au (localhost [127.0.0.1]) by overcee.netplex.com.au (Postfix) with ESMTP id BDE6181; Sun, 27 Jun 1999 17:22:50 +0800 (WST) (envelope-from peter@netplex.com.au) X-Mailer: exmh version 2.0.2 2/24/98 To: Matthew Dillon Cc: current@FreeBSD.ORG, mckusick@mckusick.com Subject: Re: BUF_LOCK() related panic.. In-reply-to: Your message of "Sun, 27 Jun 1999 01:15:43 MST." <199906270815.BAA10773@apollo.backplane.com> Date: Sun, 27 Jun 1999 17:22:50 +0800 From: Peter Wemm Message-Id: <19990627092250.BDE6181@overcee.netplex.com.au> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Matthew Dillon wrote: > Ah, yes, some of us were just discussing this in a small mailing list. > Hopefully Kirk will pick up on it soon. Ah well.. someone else gets to b e > the brunt of it for a change :-). Kirk doesn't have an SMP box so he > didn't see the bug. > > I have tentitively tracked the problem down to the apparent inability of > lockmgr() locks to function from interrupts, even when used in a > non-blocking manner, due to the simplelock's it uses internally. The > new buffer cache code Kirk committed switched from B_BUSY (manually > implemented locks) to lockmgr() locks. I think what is going on is > that mainline code is getting a simplelock and then an interrupt is > coming along and also trying to get the same lock, but I can't be sure > because my DDB backtraces are somewhat munged. In this case, it was just a programming error.. The key to remember is that the simplelocks are used to protect the state of the complex lock, they are not the lock themselves. lockmgr() holds the interlock while gaining or removing references etc and then frees the simplelock so that it can sleep if required etc. The actual implementation of the simplelock routines is interrupt safe (and has to be). Cheers, -Peter -- Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message