Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: vfs_bio KASSERT (again)



On Mon, Jun 23, 2008 at 12:04:43PM +0200, Manuel Bouyer wrote:
> On Mon, Jun 23, 2008 at 11:31:14AM +0200, Manuel Bouyer wrote:
> > [...]
> > That was not it, I got the panic again:
> > panic: kernel diagnostic assertion "!ISSET(bp->b_cflags, BC_BUSY)" failed: 
> > file6
> > fatal breakpoint trap in supervisor mode
> > trap type 1 code 0 rip ffffffff804abc6d cs e030 rflags 246 cr2  
> > 7f7ffd816060 cp0
> > Stopped in pid 1009.1 (find) at netbsd:breakpoint+0x5:  leave
> > breakpoint() at netbsd:breakpoint+0x5
> > panic() at netbsd:panic+0x255
> > __kernassert() at netbsd:__kernassert+0x2d
> > getnewbuf() at netbsd:getnewbuf+0x2b4
> > getblk() at netbsd:getblk+0x91
> > bio_doread() at netbsd:bio_doread+0x24
> > bread() at netbsd:bread+0x22
> > ffs_read() at netbsd:ffs_read+0x372
> > VOP_READ() at netbsd:VOP_READ+0x2d
> > ufs_readdir() at netbsd:ufs_readdir+0x10b
> > VOP_READDIR() at netbsd:VOP_READDIR+0x39
> > vn_readdir() at netbsd:vn_readdir+0x10e
> > sys___getdents30() at netbsd:sys___getdents30+0x89
> > syscall() at netbsd:syscall+0x98
> > 
> > Are we supposed to clear BC_BUSY ourselve too ?
> 
> I've built a kernel with the attached patch, and got this panic:
> panic: kernel diagnostic assertion "!ISSET(bp->b_cflags, BC_BUSY)" failed: 
> file "/dsk/l1/misc/bouyer/current/src/sys/kern/vfs_bio.c", line 1047

Sorry, I just noticed my patch is wrong. The BC_BUSY is cleared before
exiting from brelsel(). As the buffer lists are protected by
bufcache_lock this should be OK. 

-- 
Manuel Bouyer, LIP6, Universite Paris VI.           
Manuel.Bouyer%lip6.fr@localhost
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index