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>