FreeBSD6.0-BETA1 panics
rick at snowhite.cis.uoguelph.ca
rick at snowhite.cis.uoguelph.ca
Mon Aug 1 01:27:15 GMT 2005
I've just put a little patch up
ftp://ftp.cis.uoguelph.ca/pub/nfsv4/patch2-freebsd6.0-bet1.diffc
(which is also appended to this message) that seems to fix the panics
that I reproduced when testing with:
option DEBUG_VFS_LOCKS
option DEBUG_LOCKS
I will be doing further testing on FreeBSD6.0-BETA1 and will cut new
tarballs, but you can try the patch in the meantime, since I think it
fixes the panic you saw.
rick
ps: I've got a hunch similar fixes are needed for the older versions
of FreeBSD, but I'll check into that and create separate patches,
as required.
--- patch diffc ---
*** newnfs/nfs/nfsport.h.orig Sun Jul 31 21:17:25 2005
--- newnfs/nfs/nfsport.h Sun Jul 31 21:19:54 2005
***************
*** 433,439 ****
/*
* Defined as the VOP_ISLOCKED macro.
*/
! #define NFSVOPISLOCKED(v, p) VOP_ISLOCKED((v), (p))
/*
* Increment the fp count.
--- 433,439 ----
/*
* Defined as the VOP_ISLOCKED macro.
*/
! #define NFSVOPISLOCKED(v, p) (VOP_ISLOCKED((v), (p)) == LK_EXCLUSIVE)
/*
* Increment the fp count.
*** newnfs/nfsd/nfsd_srv4root.c.orig Sun Jul 31 21:14:36 2005
--- newnfs/nfsd/nfsd_srv4root.c Sun Jul 31 21:15:03 2005
***************
*** 294,303 ****
if (cnp->cn_nameiop != LOOKUP && (flags & ISLASTCN))
cnp->cn_flags |= SAVENAME;
*(ap->a_vpp) = newvp;
- if (!lockparent || !(flags & ISLASTCN)) {
- VOP_UNLOCK(nfsv4root_vp, 0, p);
- cnp->cn_flags |= PDIRUNLOCK;
- }
return (0);
}
cp += dp->d_reclen;
--- 294,299 ----
More information about the freebsd-fs
mailing list