tech-kern archive

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

Re: rename(), wapbl and deadlock

On Wed, Jan 13, 2010 at 01:09:44PM +0100, Manuel Bouyer wrote:
 > > It is now fairly solid, but there are at least two issues remaining:
 > > after pounding for a while one fairly reliably gets KASSERT(vp->v_size
 > > != ip->i_size) failing in ufs_blkatoff, for reasons that are not
 > > entirely clear. I suspect the state information that ufs_lookup leaves
 > > behind in the inode is getting mixed up or garbaged.
 > I get this almost immediatly on a Xen guest with WAPBL:
 > login: panic: kernel diagnostic assertion "dvp->v_size == dp->i_size" 
 > failed: file "/dsk/l1/misc/bouyer/netbsd-5/src/sys/ufs/ufs/ufs_lookup.c", 
 > line 897
 > This is the kassert just after "Get the block containing the space for the
 > new directory entry".

That's one of the ones I added in the diagnostic patch I sent you but
*didn't* post? If so, that's the same as I get with that patch
applied. (Don't merge that patch; the locking assertions are

 > > The other is this:
 > > 
 > >  > With these changes, I couldn't crash or hang a kernel using rsync
 > >  > on a WAPBL filesystem. However, the system doen't come up multiuser
 > >  > if / is not logged:
 > >  > Building databases: devpanic: kernel diagnostic assertion "bn >= 
 > > NDADDR" failed: file 
 > > "/dsk/l1/misc/bouyer/netbsd-5/src/sys/ufs/ufs/ufs_bmap.c", line 349
 > >  > fatal breakpoint trap in supervisor mode
 > > 
 > > which I think may be related, but maybe not, and I haven't so far
 > > looked into it.
 > I worked around this by using ufs_wapbl_rename() even for non-WAPBL mounts.
 > The KASSERT(dvp->v_size == dp->i_size) does fire too, but not as fast as
 > with WAPBL on.

Right, but we need to figure out what's causing it.

At least we're seeing the same two problems now...

David A. Holland

Home | Main Index | Thread Index | Old Index