Author: kib
Date: Thu Dec 11 18:07:54 2008
New Revision: 185939
URL: http://svn.freebsd.org/changeset/base/185939

Log:
  MFC r185557:
  Prevent creation of the duplicated negative entries.
  
  Requested by: jhb

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       Thu Dec 11 16:48:35 2008        
(r185938)
+++ stable/6/sys/kern/vfs_cache.c       Thu Dec 11 18:07:54 2008        
(r185939)
@@ -475,7 +475,7 @@ cache_enter(dvp, vp, cnp)
        struct vnode *vp;
        struct componentname *cnp;
 {
-       struct namecache *ncp;
+       struct namecache *ncp, *n2;
        struct nchashhead *ncpp;
        u_int32_t hash;
        int hold;
@@ -531,8 +531,6 @@ cache_enter(dvp, vp, cnp)
         * name.
         */
        if (vp) {
-               struct namecache *n2;
-
                TAILQ_FOREACH(n2, &vp->v_cache_dst, nc_dst) {
                        if (n2->nc_dvp == dvp &&
                            n2->nc_nlen == cnp->cn_namelen &&
@@ -542,7 +540,16 @@ cache_enter(dvp, vp, cnp)
                                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;
+                       }
+               }
+       }
 
        numcache++;
        if (!vp) {
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to