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
unportable/illegal.)
> > 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
dholland%netbsd.org@localhost
Home |
Main Index |
Thread Index |
Old Index