FreeBSD6.0-BETA1 panics

rick at snowhite.cis.uoguelph.ca rick at snowhite.cis.uoguelph.ca
Tue Aug 2 16:50:15 GMT 2005


> 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


More information about the freebsd-fs mailing list