On Thu, 21 Apr 2011, Rick Macklem wrote:
Log:
Revert r220906, since the vp isn't always locked when
nfscl_request() is called. It will need a more involved
patch.
Modified:
head/sys/fs/nfsclient/nfs_clport.c
Modified: head/sys/fs/nfsclient/nfs_clport.c
==============================================================================
--- head/sys/fs/nfsclient/nfs_clport.c Thu Apr 21 11:44:16 2011
(r220920)
+++ head/sys/fs/nfsclient/nfs_clport.c Thu Apr 21 12:38:12 2011
(r220921)
@@ -819,8 +819,6 @@ nfscl_request(struct nfsrv_descript *nd,
int ret, vers;
struct nfsmount *nmp;
- if ((vp->v_iflag & VI_DOOMED) != 0)
- return (EPERM);
nmp = VFSTONFS(vp->v_mount);
if (nd->nd_flag & ND_NFSV4)
vers = NFS_VER4;
I was going to say that it obviously needs to be locked anyway since
it is used for other things (vp->v_mount), and that assertions that
it is locked (as suggested by kib@) would be ugly bloat (except for
debugging) since any use of it obviously implies that it is locked.
However, v_mount is special. It only needs the "u" lock. "u" means
that only a reference is needed. However, complete assertions for
this would be even uglier. To be complete, you would have a "u"
assertion that the reference is held as well as an "i" assertion for
v_iflag, with appropriate exclusiveness corresponding to which flags
are accessed and/or acted on, plus more assertions for other fields
in vp. Altogether there are about 10 different locks for vp fields.
A function that accesses vnodes could easily need assertions for all
of these to be complete.
Bruce
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"