Module Name:    src
Committed By:   rmind
Date:           Sun Jul 22 00:53:23 UTC 2012

Modified Files:
        src/sys/fs/adosfs: adlookup.c
        src/sys/fs/cd9660: cd9660_lookup.c
        src/sys/fs/efs: efs_vnops.c
        src/sys/fs/filecorefs: filecore_lookup.c
        src/sys/fs/hfs: hfs_vnops.c
        src/sys/fs/msdosfs: msdosfs_lookup.c
        src/sys/fs/nilfs: nilfs_vnops.c
        src/sys/fs/ntfs: ntfs_vnops.c
        src/sys/fs/puffs: puffs_node.c puffs_vnops.c
        src/sys/fs/smbfs: smbfs_vnops.c
        src/sys/fs/tmpfs: tmpfs_vnops.c
        src/sys/fs/udf: udf_vnops.c
        src/sys/fs/unionfs: unionfs_vnops.c
        src/sys/kern: vfs_cache.c
        src/sys/nfs: nfs_vnops.c
        src/sys/ufs/chfs: chfs_vnops.c
        src/sys/ufs/ext2fs: ext2fs_lookup.c
        src/sys/ufs/ufs: ufs_lookup.c

Log Message:
Move some the test for MAKEENTRY into the cache_enter(9).  Make some
variables in vfs_cache.c static, __read_mostly, etc.

No objection on tech-kern@.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/fs/adosfs/adlookup.c
cvs rdiff -u -r1.19 -r1.20 src/sys/fs/cd9660/cd9660_lookup.c
cvs rdiff -u -r1.25 -r1.26 src/sys/fs/efs/efs_vnops.c
cvs rdiff -u -r1.13 -r1.14 src/sys/fs/filecorefs/filecore_lookup.c
cvs rdiff -u -r1.25 -r1.26 src/sys/fs/hfs/hfs_vnops.c
cvs rdiff -u -r1.23 -r1.24 src/sys/fs/msdosfs/msdosfs_lookup.c
cvs rdiff -u -r1.17 -r1.18 src/sys/fs/nilfs/nilfs_vnops.c
cvs rdiff -u -r1.51 -r1.52 src/sys/fs/ntfs/ntfs_vnops.c
cvs rdiff -u -r1.24 -r1.25 src/sys/fs/puffs/puffs_node.c
cvs rdiff -u -r1.167 -r1.168 src/sys/fs/puffs/puffs_vnops.c
cvs rdiff -u -r1.79 -r1.80 src/sys/fs/smbfs/smbfs_vnops.c
cvs rdiff -u -r1.97 -r1.98 src/sys/fs/tmpfs/tmpfs_vnops.c
cvs rdiff -u -r1.71 -r1.72 src/sys/fs/udf/udf_vnops.c
cvs rdiff -u -r1.5 -r1.6 src/sys/fs/unionfs/unionfs_vnops.c
cvs rdiff -u -r1.88 -r1.89 src/sys/kern/vfs_cache.c
cvs rdiff -u -r1.294 -r1.295 src/sys/nfs/nfs_vnops.c
cvs rdiff -u -r1.7 -r1.8 src/sys/ufs/chfs/chfs_vnops.c
cvs rdiff -u -r1.69 -r1.70 src/sys/ufs/ext2fs/ext2fs_lookup.c
cvs rdiff -u -r1.116 -r1.117 src/sys/ufs/ufs/ufs_lookup.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/fs/adosfs/adlookup.c
diff -u src/sys/fs/adosfs/adlookup.c:1.15 src/sys/fs/adosfs/adlookup.c:1.16
--- src/sys/fs/adosfs/adlookup.c:1.15	Tue Nov 30 10:43:02 2010
+++ src/sys/fs/adosfs/adlookup.c	Sun Jul 22 00:53:18 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: adlookup.c,v 1.15 2010/11/30 10:43:02 dholland Exp $	*/
+/*	$NetBSD: adlookup.c,v 1.16 2012/07/22 00:53:18 rmind Exp $	*/
 
 /*
  * Copyright (c) 1994 Christian E. Hopps
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: adlookup.c,v 1.15 2010/11/30 10:43:02 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: adlookup.c,v 1.16 2012/07/22 00:53:18 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -210,7 +210,7 @@ adosfs_lookup(void *v)
 #endif
 		return(EJUSTRETURN);
 	}
-	if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
+	if (nameiop != CREATE)
 		cache_enter(vdp, NULL, cnp);
 #ifdef ADOSFS_DIAGNOSTIC
 	printf("ENOENT)");
@@ -240,7 +240,7 @@ found:
 	if (vdp == *vpp)
 		vref(vdp);
 found_lockdone:
-	if ((cnp->cn_flags & MAKEENTRY) && nocache == 0)
+	if (nocache == 0)
 		cache_enter(vdp, *vpp, cnp);
 
 #ifdef ADOSFS_DIAGNOSTIC

Index: src/sys/fs/cd9660/cd9660_lookup.c
diff -u src/sys/fs/cd9660/cd9660_lookup.c:1.19 src/sys/fs/cd9660/cd9660_lookup.c:1.20
--- src/sys/fs/cd9660/cd9660_lookup.c:1.19	Tue Sep 27 01:27:44 2011
+++ src/sys/fs/cd9660/cd9660_lookup.c	Sun Jul 22 00:53:18 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd9660_lookup.c,v 1.19 2011/09/27 01:27:44 christos Exp $	*/
+/*	$NetBSD: cd9660_lookup.c,v 1.20 2012/07/22 00:53:18 rmind Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1993, 1994
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cd9660_lookup.c,v 1.19 2011/09/27 01:27:44 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd9660_lookup.c,v 1.20 2012/07/22 00:53:18 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/namei.h>
@@ -336,11 +336,8 @@ notfound:
 	/*
 	 * Insert name into cache (as non-existent) if appropriate.
 	 */
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(vdp, *vpp, cnp);
-	if (nameiop == CREATE || nameiop == RENAME)
-		return (EROFS);
-	return (ENOENT);
+	cache_enter(vdp, *vpp, cnp);
+	return (nameiop == CREATE || nameiop == RENAME) ? EROFS : ENOENT;
 
 found:
 	if (numdirpasses == 2)
@@ -402,9 +399,8 @@ found:
 	/*
 	 * Insert name into cache if appropriate.
 	 */
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(vdp, *vpp, cnp);
-	return (0);
+	cache_enter(vdp, *vpp, cnp);
+	return 0;
 }
 
 /*

Index: src/sys/fs/efs/efs_vnops.c
diff -u src/sys/fs/efs/efs_vnops.c:1.25 src/sys/fs/efs/efs_vnops.c:1.26
--- src/sys/fs/efs/efs_vnops.c:1.25	Tue Mar 13 18:40:36 2012
+++ src/sys/fs/efs/efs_vnops.c	Sun Jul 22 00:53:19 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: efs_vnops.c,v 1.25 2012/03/13 18:40:36 elad Exp $	*/
+/*	$NetBSD: efs_vnops.c,v 1.26 2012/07/22 00:53:19 rmind Exp $	*/
 
 /*
  * Copyright (c) 2006 Stephen M. Rumble <rum...@ephemeral.org>
@@ -17,7 +17,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.25 2012/03/13 18:40:36 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.26 2012/07/22 00:53:19 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -102,8 +102,7 @@ efs_lookup(void *v)
 		err = efs_inode_lookup(VFSTOEFS(ap->a_dvp->v_mount),
 		    EFS_VTOI(ap->a_dvp), ap->a_cnp, &ino);
 		if (err) {
-			if (err == ENOENT && (cnp->cn_flags & MAKEENTRY) &&
-			    nameiop != CREATE)
+			if (err == ENOENT && nameiop != CREATE)
 				cache_enter(ap->a_dvp, NULL, cnp);
 			if (err == ENOENT && (nameiop == CREATE ||
 			    nameiop == RENAME)) {
@@ -121,10 +120,9 @@ efs_lookup(void *v)
 		*ap->a_vpp = vp;
 	}
 
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(ap->a_dvp, *ap->a_vpp, cnp);
+	cache_enter(ap->a_dvp, *ap->a_vpp, cnp);
 
-	return (0);
+	return 0;
 }
 
 static int

Index: src/sys/fs/filecorefs/filecore_lookup.c
diff -u src/sys/fs/filecorefs/filecore_lookup.c:1.13 src/sys/fs/filecorefs/filecore_lookup.c:1.14
--- src/sys/fs/filecorefs/filecore_lookup.c:1.13	Thu Jun 24 13:03:09 2010
+++ src/sys/fs/filecorefs/filecore_lookup.c	Sun Jul 22 00:53:19 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: filecore_lookup.c,v 1.13 2010/06/24 13:03:09 hannken Exp $	*/
+/*	$NetBSD: filecore_lookup.c,v 1.14 2012/07/22 00:53:19 rmind Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1993, 1994 The Regents of the University of California.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: filecore_lookup.c,v 1.13 2010/06/24 13:03:09 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: filecore_lookup.c,v 1.14 2012/07/22 00:53:19 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/namei.h>
@@ -246,11 +246,8 @@ notfound:
 	/*
 	 * Insert name into cache (as non-existent) if appropriate.
 	 */
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(vdp, *vpp, cnp);
-	if (nameiop == CREATE || nameiop == RENAME)
-		return (EROFS);
-	return (ENOENT);
+	cache_enter(vdp, *vpp, cnp);
+	return (nameiop == CREATE || nameiop == RENAME) ? EROFS : ENOENT;
 
 found:
 	if (numdirpasses == 2)
@@ -317,7 +314,6 @@ found:
 	/*
 	 * Insert name into cache if appropriate.
 	 */
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(vdp, *vpp, cnp);
-	return (0);
+	cache_enter(vdp, *vpp, cnp);
+	return 0;
 }

Index: src/sys/fs/hfs/hfs_vnops.c
diff -u src/sys/fs/hfs/hfs_vnops.c:1.25 src/sys/fs/hfs/hfs_vnops.c:1.26
--- src/sys/fs/hfs/hfs_vnops.c:1.25	Tue Mar 13 18:40:37 2012
+++ src/sys/fs/hfs/hfs_vnops.c	Sun Jul 22 00:53:19 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: hfs_vnops.c,v 1.25 2012/03/13 18:40:37 elad Exp $	*/
+/*	$NetBSD: hfs_vnops.c,v 1.26 2012/07/22 00:53:19 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2005, 2007 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.25 2012/03/13 18:40:37 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.26 2012/07/22 00:53:19 rmind Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ipsec.h"
@@ -474,8 +474,7 @@ hfs_vop_lookup(void *v)
 	 */
 /* XXX Cache disabled until we can make sure it works. */
 #if 0
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(vdp, *vpp, cnp);
+	cache_enter(vdp, *vpp, cnp);
 #endif
 	
 	error = 0;

Index: src/sys/fs/msdosfs/msdosfs_lookup.c
diff -u src/sys/fs/msdosfs/msdosfs_lookup.c:1.23 src/sys/fs/msdosfs/msdosfs_lookup.c:1.24
--- src/sys/fs/msdosfs/msdosfs_lookup.c:1.23	Tue Nov 30 10:43:03 2010
+++ src/sys/fs/msdosfs/msdosfs_lookup.c	Sun Jul 22 00:53:19 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: msdosfs_lookup.c,v 1.23 2010/11/30 10:43:03 dholland Exp $	*/
+/*	$NetBSD: msdosfs_lookup.c,v 1.24 2012/07/22 00:53:19 rmind Exp $	*/
 
 /*-
  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_lookup.c,v 1.23 2010/11/30 10:43:03 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_lookup.c,v 1.24 2012/07/22 00:53:19 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -399,7 +399,7 @@ notfound:
 	 * e.g. creating a file 'foo' won't invalidate a negative entry 
 	 * for 'FOO'.
 	 */
-	if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
+	if (nameiop != CREATE)
 		cache_enter(vdp, *vpp, cnp);
 #endif
 
@@ -553,10 +553,9 @@ foundroot:
 	/*
 	 * Insert name into cache if appropriate.
 	 */
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(vdp, *vpp, cnp);
+	cache_enter(vdp, *vpp, cnp);
 
-	return (0);
+	return 0;
 }
 
 /*

Index: src/sys/fs/nilfs/nilfs_vnops.c
diff -u src/sys/fs/nilfs/nilfs_vnops.c:1.17 src/sys/fs/nilfs/nilfs_vnops.c:1.18
--- src/sys/fs/nilfs/nilfs_vnops.c:1.17	Tue Mar 13 18:40:38 2012
+++ src/sys/fs/nilfs/nilfs_vnops.c	Sun Jul 22 00:53:19 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: nilfs_vnops.c,v 1.17 2012/03/13 18:40:38 elad Exp $ */
+/* $NetBSD: nilfs_vnops.c,v 1.18 2012/07/22 00:53:19 rmind Exp $ */
 
 /*
  * Copyright (c) 2008, 2009 Reinoud Zandijk
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: nilfs_vnops.c,v 1.17 2012/03/13 18:40:38 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nilfs_vnops.c,v 1.18 2012/07/22 00:53:19 rmind Exp $");
 #endif /* not lint */
 
 
@@ -760,7 +760,7 @@ out:
 	 * the file might not be found and thus putting it into the namecache
 	 * might be seen as negative caching.
 	 */
-	if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
+	if (nameiop != CREATE)
 		cache_enter(dvp, *vpp, cnp);
 
 	DPRINTFIF(LOOKUP, error, ("nilfs_lookup returing error %d\n", error));

Index: src/sys/fs/ntfs/ntfs_vnops.c
diff -u src/sys/fs/ntfs/ntfs_vnops.c:1.51 src/sys/fs/ntfs/ntfs_vnops.c:1.52
--- src/sys/fs/ntfs/ntfs_vnops.c:1.51	Sun Apr 29 22:53:59 2012
+++ src/sys/fs/ntfs/ntfs_vnops.c	Sun Jul 22 00:53:19 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ntfs_vnops.c,v 1.51 2012/04/29 22:53:59 chs Exp $	*/
+/*	$NetBSD: ntfs_vnops.c,v 1.52 2012/07/22 00:53:19 rmind Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.51 2012/04/29 22:53:59 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.52 2012/07/22 00:53:19 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -725,10 +725,9 @@ ntfs_lookup(void *v)
 		    (unsigned long long)VTONT(*ap->a_vpp)->i_number));
 	}
 
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(dvp, *ap->a_vpp, cnp);
+	cache_enter(dvp, *ap->a_vpp, cnp);
 
-	return (error);
+	return error;
 }
 
 /*

Index: src/sys/fs/puffs/puffs_node.c
diff -u src/sys/fs/puffs/puffs_node.c:1.24 src/sys/fs/puffs/puffs_node.c:1.25
--- src/sys/fs/puffs/puffs_node.c:1.24	Sun Apr  8 15:04:41 2012
+++ src/sys/fs/puffs/puffs_node.c	Sun Jul 22 00:53:20 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs_node.c,v 1.24 2012/04/08 15:04:41 manu Exp $	*/
+/*	$NetBSD: puffs_node.c,v 1.25 2012/07/22 00:53:20 rmind Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007  Antti Kantee.  All Rights Reserved.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: puffs_node.c,v 1.24 2012/04/08 15:04:41 manu Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puffs_node.c,v 1.25 2012/07/22 00:53:20 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/hash.h>
@@ -246,7 +246,7 @@ puffs_newnode(struct mount *mp, struct v
 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	*vpp = vp;
 
-	if ((cnp->cn_flags & MAKEENTRY) && PUFFS_USE_NAMECACHE(pmp))
+	if (PUFFS_USE_NAMECACHE(pmp))
 		cache_enter(dvp, vp, cnp);
 
 	return 0;

Index: src/sys/fs/puffs/puffs_vnops.c
diff -u src/sys/fs/puffs/puffs_vnops.c:1.167 src/sys/fs/puffs/puffs_vnops.c:1.168
--- src/sys/fs/puffs/puffs_vnops.c:1.167	Sat Jul 21 05:17:11 2012
+++ src/sys/fs/puffs/puffs_vnops.c	Sun Jul 22 00:53:20 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs_vnops.c,v 1.167 2012/07/21 05:17:11 manu Exp $	*/
+/*	$NetBSD: puffs_vnops.c,v 1.168 2012/07/22 00:53:20 rmind Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007  Antti Kantee.  All Rights Reserved.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.167 2012/07/21 05:17:11 manu Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.168 2012/07/22 00:53:20 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -586,9 +586,8 @@ puffs_vnop_lookup(void *v)
 
 			/* save negative cache entry */
 			} else {
-				if ((cnp->cn_flags & MAKEENTRY)
-				    && PUFFS_USE_NAMECACHE(pmp)
-				    && !PUFFS_USE_FS_TTL(pmp))
+				if (PUFFS_USE_NAMECACHE(pmp) &&
+				    !PUFFS_USE_FS_TTL(pmp))
 					cache_enter(dvp, NULL, cnp);
 			}
 		}
@@ -664,7 +663,7 @@ puffs_vnop_lookup(void *v)
 	KASSERT(lookup_msg->pvnr_newnode == VPTOPP(vp)->pn_cookie);
 	*ap->a_vpp = vp;
 
-	if ((cnp->cn_flags & MAKEENTRY) != 0 && PUFFS_USE_NAMECACHE(pmp))
+	if (PUFFS_USE_NAMECACHE(pmp))
 		cache_enter(dvp, vp, cnp);
 
 	/* XXX */

Index: src/sys/fs/smbfs/smbfs_vnops.c
diff -u src/sys/fs/smbfs/smbfs_vnops.c:1.79 src/sys/fs/smbfs/smbfs_vnops.c:1.80
--- src/sys/fs/smbfs/smbfs_vnops.c:1.79	Tue Mar 13 18:40:49 2012
+++ src/sys/fs/smbfs/smbfs_vnops.c	Sun Jul 22 00:53:20 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: smbfs_vnops.c,v 1.79 2012/03/13 18:40:49 elad Exp $	*/
+/*	$NetBSD: smbfs_vnops.c,v 1.80 2012/07/22 00:53:20 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smbfs_vnops.c,v 1.79 2012/03/13 18:40:49 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smbfs_vnops.c,v 1.80 2012/07/22 00:53:20 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -596,16 +596,12 @@ smbfs_create(void *v)
 	if (error)
 		goto out;
 
-	/* No error */
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(dvp, *ap->a_vpp, cnp);
+	cache_enter(dvp, *ap->a_vpp, cnp);
 
   out:
 	VN_KNOTE(dvp, NOTE_WRITE);
 	vput(dvp);
 	return (error);
-
-
 }
 
 int
@@ -1300,7 +1296,7 @@ smbfs_lookup(void *v)
 		/*
 		 * Insert name into cache (as non-existent) if appropriate.
 		 */
-		if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
+		if (nameiop != CREATE)
 			cache_enter(dvp, *vpp, cnp);
 
 		return (ENOENT);
@@ -1353,17 +1349,15 @@ smbfs_lookup(void *v)
 			return error;
 	}
 
-	if ((cnp->cn_flags & MAKEENTRY)) {
-		KASSERT(error == 0);
-		if (cnp->cn_nameiop != DELETE || !islastcn) {
-			VTOSMB(*vpp)->n_ctime = VTOSMB(*vpp)->n_mtime.tv_sec;
-			cache_enter(dvp, *vpp, cnp);
+	KASSERT(error == 0);
+	if (cnp->cn_nameiop != DELETE || !islastcn) {
+		VTOSMB(*vpp)->n_ctime = VTOSMB(*vpp)->n_mtime.tv_sec;
+		cache_enter(dvp, *vpp, cnp);
 #ifdef notdef
-		} else if (error == ENOENT && cnp->cn_nameiop != CREATE) {
-			VTOSMB(*vpp)->n_nctime = VTOSMB(*vpp)->n_mtime.tv_sec;
-			cache_enter(dvp, *vpp, cnp);
+	} else if (error == ENOENT && cnp->cn_nameiop != CREATE) {
+		VTOSMB(*vpp)->n_nctime = VTOSMB(*vpp)->n_mtime.tv_sec;
+		cache_enter(dvp, *vpp, cnp);
 #endif
-		}
 	}
 
 	return (0);

Index: src/sys/fs/tmpfs/tmpfs_vnops.c
diff -u src/sys/fs/tmpfs/tmpfs_vnops.c:1.97 src/sys/fs/tmpfs/tmpfs_vnops.c:1.98
--- src/sys/fs/tmpfs/tmpfs_vnops.c:1.97	Wed May  9 00:16:07 2012
+++ src/sys/fs/tmpfs/tmpfs_vnops.c	Sun Jul 22 00:53:21 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: tmpfs_vnops.c,v 1.97 2012/05/09 00:16:07 riastradh Exp $	*/
+/*	$NetBSD: tmpfs_vnops.c,v 1.98 2012/07/22 00:53:21 rmind Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.97 2012/05/09 00:16:07 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.98 2012/07/22 00:53:21 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -277,7 +277,7 @@ done:
 	 * Cache the result, unless request was for creation (as it does
 	 * not improve the performance).
 	 */
-	if ((cnp->cn_flags & MAKEENTRY) != 0 && cnp->cn_nameiop != CREATE) {
+	if (cnp->cn_nameiop != CREATE) {
 		cache_enter(dvp, *vpp, cnp);
 	}
 out:

Index: src/sys/fs/udf/udf_vnops.c
diff -u src/sys/fs/udf/udf_vnops.c:1.71 src/sys/fs/udf/udf_vnops.c:1.72
--- src/sys/fs/udf/udf_vnops.c:1.71	Sun Apr 29 22:53:59 2012
+++ src/sys/fs/udf/udf_vnops.c	Sun Jul 22 00:53:21 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: udf_vnops.c,v 1.71 2012/04/29 22:53:59 chs Exp $ */
+/* $NetBSD: udf_vnops.c,v 1.72 2012/07/22 00:53:21 rmind Exp $ */
 
 /*
  * Copyright (c) 2006, 2008 Reinoud Zandijk
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.71 2012/04/29 22:53:59 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.72 2012/07/22 00:53:21 rmind Exp $");
 #endif /* not lint */
 
 
@@ -795,7 +795,7 @@ out:
 	 * the file might not be found and thus putting it into the namecache
 	 * might be seen as negative caching.
 	 */
-	if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
+	if (nameiop != CREATE)
 		cache_enter(dvp, *vpp, cnp);
 
 	DPRINTFIF(LOOKUP, error, ("udf_lookup returing error %d\n", error));

Index: src/sys/fs/unionfs/unionfs_vnops.c
diff -u src/sys/fs/unionfs/unionfs_vnops.c:1.5 src/sys/fs/unionfs/unionfs_vnops.c:1.6
--- src/sys/fs/unionfs/unionfs_vnops.c:1.5	Sun Jun 12 03:35:55 2011
+++ src/sys/fs/unionfs/unionfs_vnops.c	Sun Jul 22 00:53:21 2012
@@ -142,8 +142,7 @@ unionfs_lookup(void *v)
 
 			vn_lock(dunp->un_dvp, LK_EXCLUSIVE | LK_RETRY);
 			vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY);
-		} else if (error == ENOENT && (cnflags & MAKEENTRY) &&
-		    nameiop != CREATE)
+		} else if (error == ENOENT && nameiop != CREATE)
 			cache_enter(dvp, NULLVP, cnp);
 
 		UNIONFS_INTERNAL_DEBUG("unionfs_lookup: leave (%d)\n", error);
@@ -269,8 +268,7 @@ unionfs_lookup(void *v)
 
 	*(ap->a_vpp) = vp;
 
-	if (cnflags & MAKEENTRY)
-		cache_enter(dvp, vp, cnp);
+	cache_enter(dvp, vp, cnp);
 
 	/* XXXAD lock status on error */
 unionfs_lookup_out:
@@ -279,7 +277,7 @@ unionfs_lookup_out:
 	if (lvp != NULLVP)
 		vrele(lvp);
 
-	if (error == ENOENT && (cnflags & MAKEENTRY) && nameiop != CREATE)
+	if (error == ENOENT && nameiop != CREATE)
 		cache_enter(dvp, NULLVP, cnp);
 
 	UNIONFS_INTERNAL_DEBUG("unionfs_lookup: leave (%d)\n", error);

Index: src/sys/kern/vfs_cache.c
diff -u src/sys/kern/vfs_cache.c:1.88 src/sys/kern/vfs_cache.c:1.89
--- src/sys/kern/vfs_cache.c:1.88	Sun Jun 12 03:35:56 2011
+++ src/sys/kern/vfs_cache.c	Sun Jul 22 00:53:18 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_cache.c,v 1.88 2011/06/12 03:35:56 rmind Exp $	*/
+/*	$NetBSD: vfs_cache.c,v 1.89 2012/07/22 00:53:18 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_cache.c,v 1.88 2011/06/12 03:35:56 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_cache.c,v 1.89 2012/07/22 00:53:18 rmind Exp $");
 
 #include "opt_ddb.h"
 #include "opt_revcache.h"
@@ -111,30 +111,37 @@ struct nchcpu {
 /*
  * Structures associated with name cacheing.
  */
-LIST_HEAD(nchashhead, namecache) *nchashtbl;
-u_long	nchash;				/* size of hash table - 1 */
+
+static kmutex_t *namecache_lock __read_mostly;
+static pool_cache_t namecache_cache __read_mostly;
+static TAILQ_HEAD(, namecache) nclruhead __cacheline_aligned;
+
+static LIST_HEAD(nchashhead, namecache) *nchashtbl __read_mostly;
+static u_long	nchash __read_mostly;
+
 #define	NCHASH(cnp, dvp)	\
 	(((cnp)->cn_hash ^ ((uintptr_t)(dvp) >> 3)) & nchash)
 
-LIST_HEAD(ncvhashhead, namecache) *ncvhashtbl;
-u_long	ncvhash;			/* size of hash table - 1 */
+static LIST_HEAD(ncvhashhead, namecache) *ncvhashtbl __read_mostly;
+static u_long	ncvhash __read_mostly;
+
 #define	NCVHASH(vp)		(((uintptr_t)(vp) >> 3) & ncvhash)
 
-long	numcache;			/* number of cache entries allocated */
-static u_int	cache_gcpend;		/* number of entries pending GC */
-static void	*cache_gcqueue;		/* garbage collection queue */
+/* Number of cache entries allocated. */
+static long	numcache __cacheline_aligned;
 
-TAILQ_HEAD(, namecache) nclruhead =		/* LRU chain */
-	TAILQ_HEAD_INITIALIZER(nclruhead);
-#define	COUNT(c,x)	(c.x++)
-struct	nchstats nchstats;		/* cache effectiveness statistics */
+/* Garbage collection queue and number of entries pending in it. */
+static void	*cache_gcqueue;
+static u_int	cache_gcpend;
 
-static pool_cache_t namecache_cache;
+/* Cache effectiveness statistics. */
+struct nchstats	nchstats __cacheline_aligned;
+#define	COUNT(c,x)	(c.x++)
 
-int cache_lowat = 95;
-int cache_hiwat = 98;
-int cache_hottime = 5;			/* number of seconds */
-int doingcache = 1;			/* 1 => enable the cache */
+static const int cache_lowat = 95;
+static const int cache_hiwat = 98;
+static const int cache_hottime = 5;	/* number of seconds */
+static int doingcache = 1;		/* 1 => enable the cache */
 
 static struct evcnt cache_ev_scan;
 static struct evcnt cache_ev_gc;
@@ -142,11 +149,8 @@ static struct evcnt cache_ev_over;
 static struct evcnt cache_ev_under;
 static struct evcnt cache_ev_forced;
 
-/* A single lock to serialize modifications. */
-static kmutex_t *namecache_lock;
-
 static void cache_invalidate(struct namecache *);
-static inline struct namecache *cache_lookup_entry(
+static struct namecache *cache_lookup_entry(
     const struct vnode *, const struct componentname *);
 static void cache_thread(void *);
 static void cache_invalidate(struct namecache *);
@@ -587,12 +591,11 @@ cache_enter(struct vnode *dvp, struct vn
 	struct nchashhead *ncpp;
 	struct ncvhashhead *nvcpp;
 
-#ifdef DIAGNOSTIC
-	if (cnp->cn_namelen > NCHNAMLEN)
-		panic("cache_enter: name too long");
-#endif
-	if (!doingcache)
+	/* First, check whether we can/should add a cache entry. */
+	if ((cnp->cn_flags & MAKEENTRY) == 0 ||
+	    __predict_false(cnp->cn_namelen > NCHNAMLEN || !doingcache)) {
 		return;
+	}
 
 	if (numcache > desiredvnodes) {
 		mutex_enter(namecache_lock);
@@ -628,6 +631,7 @@ cache_enter(struct vnode *dvp, struct vn
 		 */
 		ncp->nc_flags = cnp->cn_flags & ISWHITEOUT;
 	}
+
 	/* Fill in cache info. */
 	ncp->nc_dvp = dvp;
 	LIST_INSERT_HEAD(&dvp->v_dnclist, ncp, nc_dvlist);
@@ -637,9 +641,10 @@ cache_enter(struct vnode *dvp, struct vn
 		ncp->nc_vlist.le_prev = NULL;
 		ncp->nc_vlist.le_next = NULL;
 	}
+	KASSERT(cnp->cn_namelen <= NCHNAMLEN);
 	ncp->nc_nlen = cnp->cn_namelen;
-	TAILQ_INSERT_TAIL(&nclruhead, ncp, nc_lru);
 	memcpy(ncp->nc_name, cnp->cn_nameptr, (unsigned)ncp->nc_nlen);
+	TAILQ_INSERT_TAIL(&nclruhead, ncp, nc_lru);
 	ncpp = &nchashtbl[NCHASH(cnp, dvp)];
 
 	/*
@@ -685,6 +690,7 @@ nchinit(void)
 {
 	int error;
 
+	TAILQ_INIT(&nclruhead);
 	namecache_cache = pool_cache_init(sizeof(struct namecache), 
 	    coherency_unit, 0, 0, "ncache", NULL, IPL_NONE, cache_ctor,
 	    cache_dtor, NULL);

Index: src/sys/nfs/nfs_vnops.c
diff -u src/sys/nfs/nfs_vnops.c:1.294 src/sys/nfs/nfs_vnops.c:1.295
--- src/sys/nfs/nfs_vnops.c:1.294	Fri Apr 27 18:12:01 2012
+++ src/sys/nfs/nfs_vnops.c	Sun Jul 22 00:53:21 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_vnops.c,v 1.294 2012/04/27 18:12:01 drochner Exp $	*/
+/*	$NetBSD: nfs_vnops.c,v 1.295 2012/07/22 00:53:21 rmind Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.294 2012/04/27 18:12:01 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.295 2012/07/22 00:53:21 rmind Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_nfs.h"
@@ -267,6 +267,9 @@ nfs_cache_enter(struct vnode *dvp, struc
 {
 	struct nfsnode *dnp = VTONFS(dvp);
 
+	if ((cnp->cn_flags & MAKEENTRY) == 0) {
+		return;
+	}
 	if (vp != NULL) {
 		struct nfsnode *np = VTONFS(vp);
 
@@ -996,8 +999,7 @@ dorpc:
 #endif
 			nfsm_loadattr(newvp, (struct vattr *)0, 0);
 	}
-	if ((cnp->cn_flags & MAKEENTRY) &&
-	    (cnp->cn_nameiop != DELETE || !(flags & ISLASTCN))) {
+	if (cnp->cn_nameiop != DELETE || !(flags & ISLASTCN)) {
 		nfs_cache_enter(dvp, newvp, cnp);
 	}
 	*vpp = newvp;
@@ -1009,8 +1011,7 @@ dorpc:
 		 * (the nfsm_* macros will jump to nfsm_reqdone
 		 * on error).
 		 */
-		if (error == ENOENT && (cnp->cn_flags & MAKEENTRY) &&
-		    cnp->cn_nameiop != CREATE) {
+		if (error == ENOENT && cnp->cn_nameiop != CREATE) {
 			nfs_cache_enter(dvp, NULL, cnp);
 		}
 		if (newvp != NULLVP) {
@@ -1549,8 +1550,7 @@ nfs_mknodrpc(struct vnode *dvp, struct v
 		if (newvp)
 			vput(newvp);
 	} else {
-		if (cnp->cn_flags & MAKEENTRY)
-			nfs_cache_enter(dvp, newvp, cnp);
+		nfs_cache_enter(dvp, newvp, cnp);
 		*vpp = newvp;
 	}
 	VTONFS(dvp)->n_flag |= NMODIFIED;
@@ -2252,8 +2252,7 @@ nfs_mkdir(void *v)
 		}
 	} else {
 		VN_KNOTE(dvp, NOTE_WRITE | NOTE_LINK);
-		if (cnp->cn_flags & MAKEENTRY)
-			nfs_cache_enter(dvp, newvp, cnp);
+		nfs_cache_enter(dvp, newvp, cnp);
 		*ap->a_vpp = newvp;
 	}
 	vput(dvp);

Index: src/sys/ufs/chfs/chfs_vnops.c
diff -u src/sys/ufs/chfs/chfs_vnops.c:1.7 src/sys/ufs/chfs/chfs_vnops.c:1.8
--- src/sys/ufs/chfs/chfs_vnops.c:1.7	Sun Apr 29 22:54:00 2012
+++ src/sys/ufs/chfs/chfs_vnops.c	Sun Jul 22 00:53:22 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: chfs_vnops.c,v 1.7 2012/04/29 22:54:00 chs Exp $	*/
+/*	$NetBSD: chfs_vnops.c,v 1.8 2012/07/22 00:53:22 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2010 Department of Software Engineering,
@@ -154,9 +154,9 @@ chfs_lookup(void *v)
 	// Store the result of this lookup in the cache.  Avoid this if the
 	// request was for creation, as it does not improve timings on
 	// emprical tests.
-	if ((cnp->cn_flags & MAKEENTRY) && cnp->cn_nameiop != CREATE
-	    && (cnp->cn_flags & ISDOTDOT) == 0)
+	if (cnp->cn_nameiop != CREATE && (cnp->cn_flags & ISDOTDOT) == 0) {
 		cache_enter(dvp, *vpp, cnp);
+	}
 
 out:
 	// If there were no errors, *vpp cannot be null and it must be

Index: src/sys/ufs/ext2fs/ext2fs_lookup.c
diff -u src/sys/ufs/ext2fs/ext2fs_lookup.c:1.69 src/sys/ufs/ext2fs/ext2fs_lookup.c:1.70
--- src/sys/ufs/ext2fs/ext2fs_lookup.c:1.69	Fri Mar 16 08:39:54 2012
+++ src/sys/ufs/ext2fs/ext2fs_lookup.c	Sun Jul 22 00:53:22 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ext2fs_lookup.c,v 1.69 2012/03/16 08:39:54 hannken Exp $	*/
+/*	$NetBSD: ext2fs_lookup.c,v 1.70 2012/07/22 00:53:22 rmind Exp $	*/
 
 /*
  * Modified for NetBSD 1.2E
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ext2fs_lookup.c,v 1.69 2012/03/16 08:39:54 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ext2fs_lookup.c,v 1.70 2012/07/22 00:53:22 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -538,9 +538,10 @@ searchloop:
 	/*
 	 * Insert name into cache (as non-existent) if appropriate.
 	 */
-	if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
+	if (nameiop != CREATE) {
 		cache_enter(vdp, *vpp, cnp);
-	return (ENOENT);
+	}
+	return ENOENT;
 
 found:
 	if (numdirpasses == 2)
@@ -698,9 +699,8 @@ found:
 	/*
 	 * Insert name into cache if appropriate.
 	 */
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(vdp, *vpp, cnp);
-	return (0);
+	cache_enter(vdp, *vpp, cnp);
+	return 0;
 }
 
 /*

Index: src/sys/ufs/ufs/ufs_lookup.c
diff -u src/sys/ufs/ufs/ufs_lookup.c:1.116 src/sys/ufs/ufs/ufs_lookup.c:1.117
--- src/sys/ufs/ufs/ufs_lookup.c:1.116	Mon Jun  4 16:46:45 2012
+++ src/sys/ufs/ufs/ufs_lookup.c	Sun Jul 22 00:53:22 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ufs_lookup.c,v 1.116 2012/06/04 16:46:45 riastradh Exp $	*/
+/*	$NetBSD: ufs_lookup.c,v 1.117 2012/07/22 00:53:22 rmind Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ufs_lookup.c,v 1.116 2012/06/04 16:46:45 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ufs_lookup.c,v 1.117 2012/07/22 00:53:22 rmind Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ffs.h"
@@ -496,8 +496,9 @@ notfound:
 	/*
 	 * Insert name into cache (as non-existent) if appropriate.
 	 */
-	if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
+	if (nameiop != CREATE) {
 		cache_enter(vdp, *vpp, cnp);
+	}
 	error = ENOENT;
 	goto out;
 
@@ -660,8 +661,7 @@ found:
 	/*
 	 * Insert name into cache if appropriate.
 	 */
-	if (cnp->cn_flags & MAKEENTRY)
-		cache_enter(vdp, *vpp, cnp);
+	cache_enter(vdp, *vpp, cnp);
 	error = 0;
 
 out:

Reply via email to