netbsd-bugs@netbsd.org
[Top] [All Lists]

Re: kern/39052: assertion "!ISSET(bp->b_cflags, BC_BUSY)" failed

Subject: Re: kern/39052: assertion "!ISSET(bp->b_cflags, BC_BUSY)" failed
From: Manuel Bouyer
Date: Fri, 27 Jun 2008 19:18:22 UTC
Newsgroups: fa.netbsd.tech.kern

On Fri, Jun 27, 2008 at 08:37:37PM +0200, Manuel Bouyer wrote:
> [...]
> 
> So we set BC_BUSY just before releasing bufcache_lock, on a buffer which is
> in the LRU queue. That's why we're getting the panic later.
> 
> Now, is it OK to have a dirty buffer in the LRU queue ? It looks like
> we could recycle dirty buffers from the LRU queue without flushing them
> to disk first, isn't it ?

One case where this can happen is though bdwrite(), which sets
BO_DELWRI before calling brelse(). I added a check for this in brelsel()
(putting a BO_DELWRI buffer in one of the free lists), and got several
different traces; but it always has bdwrite() in it.

Where do we go from here ?

-- 
Manuel Bouyer <bouyer@xxxxxxxxxxxxxxx>
     NetBSD: 26 ans d'experience feront toujours la difference
--

<Prev in Thread] Current Thread [Next in Thread>