Date: Fri, 12 Jul 2002 22:18:35 +0100 From: Ian Dowse <iedowse@maths.tcd.ie> To: "Andrey A. Chernov" <ache@nagual.pp.ru> Cc: current@freebsd.org Subject: Re: bdwrite: buffer is not busy Message-ID: <200207122218.aa20866@salmon.maths.tcd.ie> In-Reply-To: Your message of "Fri, 12 Jul 2002 22:25:35 %2B0400." <20020712182534.GA336@nagual.pp.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <20020712182534.GA336@nagual.pp.ru>, "Andrey A. Chernov" writes: >I see this panic constantly during last month or two, UP machine, no >softupdates. Anybody else saw it too? Any ideas? The "buffer is not busy" panic is usually a secondary panic that occurs while trying to sync the disks after a different panic. If possible, try to get the first panic message, or ideally a stack trace. I think (but I've never checked for sure) that the "buffer is not busy" panics occur because of the following code in lockmgr(), combined with later sanity checks: if (panicstr != NULL) { mtx_unlock(lkp->lk_interlock); return (0); } This basically causes all lockmgr locks to be unconditionally and immediately granted after a panic without actually marking the lock as locked. Not surprisingly, this causes any lock state sanity checks later to fail. The original intention was probably to avoid deadlocking while syncing the disks, but a virtually guaranteed secondary panic isn't helpful either. It might be worth checking if a "return (EBUSY);" or a "lkp->lk_flags |= LK_HAVE_EXCL; lkp->lk_lockholder = pid;" in here would do better. The alternative is to make "kern.sync_on_panic=0" the default. Ian To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi? <200207122218.aa20866>