> on 04/11/2010 16:45 Andriy Gapon said the following:
> > on 04/11/2010 09:49 Andriy Gapon said the following:
> >>
> >> I see a few processes stuck on the same vnode, trying to take or to
> >> upgrade to
> >> an exclusive lock on it, while the lock data suggests that it is
> >> already
> >> shared-locked. The vnode is a root vnode of one of ZFS filesystems
> >> (it's not a
> >> global root).
> >>
> >> I couldn't find any (other) threads that could actually hold the
> >> vnode lock, but
> >> lock shared count is suspiciously or coincidentally the same as
> >> number of
> >> threads in zfs_root call.
> >
> > BTW, I still have the system alive and online, so if anyone has
> > ideas I can try them.
> >
> 
> The kernel is not live now, but I have saved it and vmcore of the
> system.
> 
> Kostik,
> 
> just a pure guesswork here - could r214049 have something to do with
> this?
> I looked at the change and it looks completely correct - I don't think
> that a
> vnode lock can be leaked by that code. But, OTOH, it has some special
> handling
> for VV_ROOT, it's in NFS code and and it's in a right time-frame, so
> just asking.
> 
You could try the attached patch which seems to have worked for Josh
Carroll, who had a similar problem with stable/8.

rick
--- nfs_serv.c.sav	2010-11-05 08:15:57.000000000 -0400
+++ nfs_serv.c	2010-11-05 08:18:40.000000000 -0400
@@ -3252,7 +3252,7 @@
 			nfhp->fh_fsid = nvp->v_mount->mnt_stat.f_fsid;
 			if ((error1 = VOP_VPTOFH(nvp, &nfhp->fh_fid)) == 0)
 				error1 = VOP_GETATTR(nvp, vap, cred);
-			if (vp == nvp)
+			if (usevget == 0 && vp == nvp)
 				vunref(nvp);
 			else
 				vput(nvp);
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to