Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Aug 2005 12:50:42 -0400 (EDT)
From:      rick@snowhite.cis.uoguelph.ca
To:        kris@obsecurity.org
Cc:        fs@freebsd.org, openbsd-nfsv4@sfobugs.org
Subject:   Re: FreeBSD6.0-BETA1 panics
Message-ID:  <200508021650.MAA45945@snowhite.cis.uoguelph.ca>

next in thread | raw e-mail | index | archive | help
> Didn't help.  Running two cvs updates over NFS and one locally over
> ufs (all against the same repo) again caused a deadlock in a few
> seconds:
[good diagnostic stuff snipped]

Ok, the race is obvious (although the fix not quite so:-). It is specific
to the FreeBSD port. Most of my development has been done under OpenBSD
and it doesn't require the vnode to be locked for a VOP_GETATTR(). To
"fix" this for FreeBSD, I put a little glue routine called nfsrvn_getattr()
in that locks the vnode before the VOP_GETATTR() call. Unfortunately this
caused the race to hit (and probably several others at other nfsrvn_getattr()
calls).

I think the fix is probably to move the call down until after the vnode
that was looked up has been unlocked, but it will take a little time.

For the OpenBSDers: This race won't be a problem in OpenBSD3.7.

Thanks yet again for the testing and I'll let you know when I have
something for you to try, rick



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508021650.MAA45945>