svn commit: r186861 - in stable/6/sys: . kern
Konstantin Belousov
kib at FreeBSD.org
Wed Jan 7 14:00:47 UTC 2009
Author: kib
Date: Wed Jan 7 14:00:44 2009
New Revision: 186861
URL: http://svn.freebsd.org/changeset/base/186861
Log:
MFC r186600:
In r185557, the check for existing negative entry for the given name
did not compared nc_dvp with supplied parent directory vnode pointer.
Add the check and note that now branches for vp != NULL and vp == NULL
are the same, thus can be merged.
Modified:
stable/6/sys/ (props changed)
stable/6/sys/kern/vfs_cache.c
Modified: stable/6/sys/kern/vfs_cache.c
==============================================================================
--- stable/6/sys/kern/vfs_cache.c Wed Jan 7 12:44:03 2009 (r186860)
+++ stable/6/sys/kern/vfs_cache.c Wed Jan 7 14:00:44 2009 (r186861)
@@ -526,28 +526,18 @@ cache_enter(dvp, vp, cnp)
CACHE_LOCK();
/*
- * See if this vnode is already in the cache with this name.
- * This can happen with concurrent lookups of the same path
- * name.
+ * See if this vnode or negative entry is already in the cache
+ * with this name. This can happen with concurrent lookups of
+ * the same path name.
*/
- if (vp) {
- TAILQ_FOREACH(n2, &vp->v_cache_dst, nc_dst) {
- if (n2->nc_dvp == dvp &&
- n2->nc_nlen == cnp->cn_namelen &&
- !bcmp(n2->nc_name, cnp->cn_nameptr, n2->nc_nlen)) {
- CACHE_UNLOCK();
- cache_free(ncp);
- return;
- }
- }
- } else {
- TAILQ_FOREACH(n2, &ncneg, nc_dst) {
- if (n2->nc_nlen == cnp->cn_namelen &&
- !bcmp(n2->nc_name, cnp->cn_nameptr, n2->nc_nlen)) {
- CACHE_UNLOCK();
- cache_free(ncp);
- return;
- }
+ ncpp = NCHHASH(hash);
+ LIST_FOREACH(n2, ncpp, nc_hash) {
+ if (n2->nc_dvp == dvp &&
+ n2->nc_nlen == cnp->cn_namelen &&
+ !bcmp(n2->nc_name, cnp->cn_nameptr, n2->nc_nlen)) {
+ CACHE_UNLOCK();
+ cache_free(ncp);
+ return;
}
}
@@ -565,7 +555,6 @@ cache_enter(dvp, vp, cnp)
* Insert the new namecache entry into the appropriate chain
* within the cache entries table.
*/
- ncpp = NCHHASH(hash);
LIST_INSERT_HEAD(ncpp, ncp, nc_hash);
if (LIST_EMPTY(&dvp->v_cache_src)) {
hold = 1;
More information about the svn-src-stable-6
mailing list