Index: nfs_vnops.c =================================================================== RCS file: /zoo/pjd/repo/src/sys/nfsclient/nfs_vnops.c,v retrieving revision 1.276 diff -u -p -r1.276 nfs_vnops.c --- nfs_vnops.c 1 Jun 2007 01:12:44 -0000 1.276 +++ nfs_vnops.c 5 Jun 2007 13:47:32 -0000 @@ -851,6 +851,7 @@ nfs_lookup(struct vop_lookup_args *ap) int error = 0, attrflag, fhsize; int v3 = NFS_ISV3(dvp); struct thread *td = cnp->cn_thread; + int lktype; *vpp = NULLVP; if ((flags & ISLASTCN) && (dvp->v_mount->mnt_flag & MNT_RDONLY) && @@ -930,9 +931,10 @@ nfs_lookup(struct vop_lookup_args *ap) } if (flags & ISDOTDOT) { + lktype = VOP_ISLOCKED(dvp, td); VOP_UNLOCK(dvp, 0, td); error = nfs_nget(dvp->v_mount, fhp, fhsize, &np, cnp->cn_lkflags); - vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(dvp, lktype | LK_RETRY, td); if (error) return (error); newvp = NFSTOV(np);