Skip site navigation (1)Skip section navigation (2)
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>