Date: Tue, 10 Mar 2009 18:41:06 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r189639 - head/sys/nfsclient Message-ID: <200903101841.n2AIf6si070377@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jhb Date: Tue Mar 10 18:41:06 2009 New Revision: 189639 URL: http://svn.freebsd.org/changeset/base/189639 Log: - Remove code to set SAVENAME for CREATE or RENAME requests that get a -ve hit in the name cache. cache_lookup() doesn't actually return ENOENT for such requests to force the filesystem to do an explicit lookup, so this was effectively dead code. - Grab the nfsnode mutex while writing to n_dmtime. We don't grab the lock when comparing the time against the cached directory mod time (just as we don't when comparing ctime's for +ve name cache hits) since the attribute caching is already racy for NFS clients as it is. Discussed with: bde Modified: head/sys/nfsclient/nfs_vnops.c Modified: head/sys/nfsclient/nfs_vnops.c ============================================================================== --- head/sys/nfsclient/nfs_vnops.c Tue Mar 10 18:16:03 2009 (r189638) +++ head/sys/nfsclient/nfs_vnops.c Tue Mar 10 18:41:06 2009 (r189639) @@ -923,14 +923,12 @@ nfs_lookup(struct vop_lookup_args *ap) if (VOP_GETATTR(dvp, &vattr, cnp->cn_cred) == 0 && vattr.va_mtime.tv_sec == np->n_dmtime) { nfsstats.lookupcache_hits++; - if ((cnp->cn_nameiop == CREATE || - cnp->cn_nameiop == RENAME) && - (flags & ISLASTCN)) - cnp->cn_flags |= SAVENAME; return (ENOENT); } cache_purge_negative(dvp); + mtx_lock(&np->n_mtx); np->n_dmtime = 0; + mtx_unlock(&np->n_mtx); } error = 0; newvp = NULLVP; @@ -1041,8 +1039,10 @@ nfsmout: * name cache entry for this directory was * added. */ + mtx_lock(&np->n_mtx); if (np->n_dmtime == 0) np->n_dmtime = np->n_vattr.va_mtime.tv_sec; + mtx_unlock(&np->n_mtx); cache_enter(dvp, NULL, cnp); } return (ENOENT);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903101841.n2AIf6si070377>