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 10:45:29AM +0000, David Holland wrote:
> On Thu, Dec 17, 2009 at 10:29:13PM +0100, Manuel Bouyer wrote:
> > I got a look again at the ufs_rename patch that David Holland sent
> > at the end of september, and managed to get it working on netbsd-5.
>
> I've posted three fix patches (that apply on top) along with the
> original patches here:
> http://www.eecs.harvard.edu/~dholland/tmp/netbsd/ufs_rename/
>
> This includes fixes for the link count problems I was seeing on the
> last go-around, and also fixes the panic: relookup: bad hash issue
> (which turned out to be due to insufficiently careful frobbing of
> SAVESTART), and also includes (I believe) all the issues posted here.
I applied these fixes to my netbsd-5 tree.
>
> 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".
>
> 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.
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index