> 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"