Module Name: src
Committed By: martin
Date: Sun Aug 12 12:59:51 UTC 2012
Modified Files:
src/sys/fs/adosfs [netbsd-6]: adlookup.c
src/sys/fs/cd9660 [netbsd-6]: cd9660_lookup.c
src/sys/fs/efs [netbsd-6]: efs_vnops.c
src/sys/fs/filecorefs [netbsd-6]: filecore_lookup.c
src/sys/fs/hfs [netbsd-6]: hfs_vnops.c
src/sys/fs/msdosfs [netbsd-6]: msdosfs_lookup.c
src/sys/fs/nilfs [netbsd-6]: nilfs_vnops.c
src/sys/fs/ntfs [netbsd-6]: ntfs_vnops.c
src/sys/fs/puffs [netbsd-6]: puffs_node.c puffs_vnops.c
src/sys/fs/smbfs [netbsd-6]: smbfs_vnops.c
src/sys/fs/tmpfs [netbsd-6]: tmpfs_vnops.c
src/sys/fs/udf [netbsd-6]: udf_vnops.c
src/sys/fs/unionfs [netbsd-6]: unionfs_vnops.c
src/sys/kern [netbsd-6]: vfs_cache.c
src/sys/nfs [netbsd-6]: nfs_vnops.c
src/sys/ufs/chfs [netbsd-6]: chfs_vnops.c
src/sys/ufs/ext2fs [netbsd-6]: ext2fs_lookup.c
src/sys/ufs/ufs [netbsd-6]: ufs_lookup.c
Log Message:
Pull up following revision(s) (requested by manu in ticket #484):
sys/fs/nilfs/nilfs_vnops.c: revision 1.18
sys/ufs/ufs/ufs_lookup.c: revision 1.117
sys/nfs/nfs_vnops.c: revision 1.295
sys/ufs/chfs/chfs_vnops.c: revision 1.8
sys/ufs/ext2fs/ext2fs_lookup.c: revision 1.70
sys/fs/unionfs/unionfs_vnops.c: revision 1.6
sys/kern/vfs_cache.c: revision 1.89
sys/fs/efs/efs_vnops.c: revision 1.26
sys/fs/hfs/hfs_vnops.c: revision 1.26
sys/fs/adosfs/adlookup.c: revision 1.16
sys/fs/puffs/puffs_vnops.c: revision 1.168
sys/fs/tmpfs/tmpfs_vnops.c: revision 1.98
sys/fs/ntfs/ntfs_vnops.c: revision 1.52
sys/fs/cd9660/cd9660_lookup.c: revision 1.20
sys/fs/msdosfs/msdosfs_lookup.c: revision 1.24
sys/fs/smbfs/smbfs_vnops.c: revision 1.80
sys/fs/udf/udf_vnops.c: revision 1.72
sys/fs/filecorefs/filecore_lookup.c: revision 1.14
sys/fs/puffs/puffs_node.c: revision 1.25
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.15.14.1 src/sys/fs/adosfs/adlookup.c
cvs rdiff -u -r1.19 -r1.19.8.1 src/sys/fs/cd9660/cd9660_lookup.c
cvs rdiff -u -r1.24 -r1.24.10.1 src/sys/fs/efs/efs_vnops.c
cvs rdiff -u -r1.13 -r1.13.14.1 src/sys/fs/filecorefs/filecore_lookup.c
cvs rdiff -u -r1.24 -r1.24.8.1 src/sys/fs/hfs/hfs_vnops.c
cvs rdiff -u -r1.23 -r1.23.14.1 src/sys/fs/msdosfs/msdosfs_lookup.c
cvs rdiff -u -r1.16 -r1.16.6.1 src/sys/fs/nilfs/nilfs_vnops.c
cvs rdiff -u -r1.49.10.1 -r1.49.10.2 src/sys/fs/ntfs/ntfs_vnops.c
cvs rdiff -u -r1.23.2.1 -r1.23.2.2 src/sys/fs/puffs/puffs_node.c
cvs rdiff -u -r1.163.2.2 -r1.163.2.3 src/sys/fs/puffs/puffs_vnops.c
cvs rdiff -u -r1.78 -r1.78.2.1 src/sys/fs/smbfs/smbfs_vnops.c
cvs rdiff -u -r1.94.2.1 -r1.94.2.2 src/sys/fs/tmpfs/tmpfs_vnops.c
cvs rdiff -u -r1.69.6.1 -r1.69.6.2 src/sys/fs/udf/udf_vnops.c
cvs rdiff -u -r1.5 -r1.5.8.1 src/sys/fs/unionfs/unionfs_vnops.c
cvs rdiff -u -r1.88 -r1.88.8.1 src/sys/kern/vfs_cache.c
cvs rdiff -u -r1.293 -r1.293.4.1 src/sys/nfs/nfs_vnops.c
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 src/sys/ufs/chfs/chfs_vnops.c
cvs rdiff -u -r1.67 -r1.67.2.1 src/sys/ufs/ext2fs/ext2fs_lookup.c
cvs rdiff -u -r1.111 -r1.111.8.1 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.15.14.1
--- src/sys/fs/adosfs/adlookup.c:1.15 Tue Nov 30 10:43:02 2010
+++ src/sys/fs/adosfs/adlookup.c Sun Aug 12 12:59:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: adlookup.c,v 1.15 2010/11/30 10:43:02 dholland Exp $ */
+/* $NetBSD: adlookup.c,v 1.15.14.1 2012/08/12 12:59:49 martin 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.15.14.1 2012/08/12 12:59:49 martin 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.19.8.1
--- src/sys/fs/cd9660/cd9660_lookup.c:1.19 Tue Sep 27 01:27:44 2011
+++ src/sys/fs/cd9660/cd9660_lookup.c Sun Aug 12 12:59:50 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.19.8.1 2012/08/12 12:59:50 martin 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.19.8.1 2012/08/12 12:59:50 martin 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.24 src/sys/fs/efs/efs_vnops.c:1.24.10.1
--- src/sys/fs/efs/efs_vnops.c:1.24 Thu May 19 03:11:56 2011
+++ src/sys/fs/efs/efs_vnops.c Sun Aug 12 12:59:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: efs_vnops.c,v 1.24 2011/05/19 03:11:56 rmind Exp $ */
+/* $NetBSD: efs_vnops.c,v 1.24.10.1 2012/08/12 12:59:49 martin Exp $ */
/*
* Copyright (c) 2006 Stephen M. Rumble <[email protected]>
@@ -17,7 +17,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.24 2011/05/19 03:11:56 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.24.10.1 2012/08/12 12:59:49 martin 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.13.14.1
--- src/sys/fs/filecorefs/filecore_lookup.c:1.13 Thu Jun 24 13:03:09 2010
+++ src/sys/fs/filecorefs/filecore_lookup.c Sun Aug 12 12:59:51 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.13.14.1 2012/08/12 12:59:51 martin 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.13.14.1 2012/08/12 12:59:51 martin 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.24 src/sys/fs/hfs/hfs_vnops.c:1.24.8.1
--- src/sys/fs/hfs/hfs_vnops.c:1.24 Tue Sep 27 01:14:47 2011
+++ src/sys/fs/hfs/hfs_vnops.c Sun Aug 12 12:59:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: hfs_vnops.c,v 1.24 2011/09/27 01:14:47 christos Exp $ */
+/* $NetBSD: hfs_vnops.c,v 1.24.8.1 2012/08/12 12:59:49 martin 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.24 2011/09/27 01:14:47 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.24.8.1 2012/08/12 12:59:49 martin 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.23.14.1
--- src/sys/fs/msdosfs/msdosfs_lookup.c:1.23 Tue Nov 30 10:43:03 2010
+++ src/sys/fs/msdosfs/msdosfs_lookup.c Sun Aug 12 12:59:50 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.23.14.1 2012/08/12 12:59:50 martin 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.23.14.1 2012/08/12 12:59:50 martin 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.16 src/sys/fs/nilfs/nilfs_vnops.c:1.16.6.1
--- src/sys/fs/nilfs/nilfs_vnops.c:1.16 Fri Nov 18 21:18:50 2011
+++ src/sys/fs/nilfs/nilfs_vnops.c Sun Aug 12 12:59:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: nilfs_vnops.c,v 1.16 2011/11/18 21:18:50 christos Exp $ */
+/* $NetBSD: nilfs_vnops.c,v 1.16.6.1 2012/08/12 12:59:47 martin 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.16 2011/11/18 21:18:50 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nilfs_vnops.c,v 1.16.6.1 2012/08/12 12:59:47 martin 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.49.10.1 src/sys/fs/ntfs/ntfs_vnops.c:1.49.10.2
--- src/sys/fs/ntfs/ntfs_vnops.c:1.49.10.1 Mon May 7 03:01:13 2012
+++ src/sys/fs/ntfs/ntfs_vnops.c Sun Aug 12 12:59:50 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: ntfs_vnops.c,v 1.49.10.1 2012/05/07 03:01:13 riz Exp $ */
+/* $NetBSD: ntfs_vnops.c,v 1.49.10.2 2012/08/12 12:59:50 martin Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.49.10.1 2012/05/07 03:01:13 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.49.10.2 2012/08/12 12:59:50 martin Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -724,10 +724,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.23.2.1 src/sys/fs/puffs/puffs_node.c:1.23.2.2
--- src/sys/fs/puffs/puffs_node.c:1.23.2.1 Mon Apr 23 16:49:02 2012
+++ src/sys/fs/puffs/puffs_node.c Sun Aug 12 12:59:50 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: puffs_node.c,v 1.23.2.1 2012/04/23 16:49:02 riz Exp $ */
+/* $NetBSD: puffs_node.c,v 1.23.2.2 2012/08/12 12:59:50 martin 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.23.2.1 2012/04/23 16:49:02 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puffs_node.c,v 1.23.2.2 2012/08/12 12:59:50 martin 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.163.2.2 src/sys/fs/puffs/puffs_vnops.c:1.163.2.3
--- src/sys/fs/puffs/puffs_vnops.c:1.163.2.2 Mon Apr 23 16:49:00 2012
+++ src/sys/fs/puffs/puffs_vnops.c Sun Aug 12 12:59:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: puffs_vnops.c,v 1.163.2.2 2012/04/23 16:49:00 riz Exp $ */
+/* $NetBSD: puffs_vnops.c,v 1.163.2.3 2012/08/12 12:59:49 martin 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.163.2.2 2012/04/23 16:49:00 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.163.2.3 2012/08/12 12:59:49 martin Exp $");
#include <sys/param.h>
#include <sys/buf.h>
@@ -590,9 +590,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);
}
}
@@ -651,7 +650,7 @@ puffs_vnop_lookup(void *v)
*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.78 src/sys/fs/smbfs/smbfs_vnops.c:1.78.2.1
--- src/sys/fs/smbfs/smbfs_vnops.c:1.78 Fri Jan 27 19:48:40 2012
+++ src/sys/fs/smbfs/smbfs_vnops.c Sun Aug 12 12:59:51 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: smbfs_vnops.c,v 1.78 2012/01/27 19:48:40 para Exp $ */
+/* $NetBSD: smbfs_vnops.c,v 1.78.2.1 2012/08/12 12:59:51 martin 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.78 2012/01/27 19:48:40 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smbfs_vnops.c,v 1.78.2.1 2012/08/12 12:59:51 martin Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -592,16 +592,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
@@ -1296,7 +1292,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);
@@ -1349,17 +1345,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.94.2.1 src/sys/fs/tmpfs/tmpfs_vnops.c:1.94.2.2
--- src/sys/fs/tmpfs/tmpfs_vnops.c:1.94.2.1 Mon Feb 27 20:25:33 2012
+++ src/sys/fs/tmpfs/tmpfs_vnops.c Sun Aug 12 12:59:50 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: tmpfs_vnops.c,v 1.94.2.1 2012/02/27 20:25:33 riz Exp $ */
+/* $NetBSD: tmpfs_vnops.c,v 1.94.2.2 2012/08/12 12:59:50 martin 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.94.2.1 2012/02/27 20:25:33 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.94.2.2 2012/08/12 12:59:50 martin Exp $");
#include <sys/param.h>
#include <sys/dirent.h>
@@ -285,7 +285,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.69.6.1 src/sys/fs/udf/udf_vnops.c:1.69.6.2
--- src/sys/fs/udf/udf_vnops.c:1.69.6.1 Mon May 7 03:01:14 2012
+++ src/sys/fs/udf/udf_vnops.c Sun Aug 12 12:59:51 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: udf_vnops.c,v 1.69.6.1 2012/05/07 03:01:14 riz Exp $ */
+/* $NetBSD: udf_vnops.c,v 1.69.6.2 2012/08/12 12:59:51 martin 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.69.6.1 2012/05/07 03:01:14 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.69.6.2 2012/08/12 12:59:51 martin 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.5.8.1
--- src/sys/fs/unionfs/unionfs_vnops.c:1.5 Sun Jun 12 03:35:55 2011
+++ src/sys/fs/unionfs/unionfs_vnops.c Sun Aug 12 12:59:48 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.88.8.1
--- src/sys/kern/vfs_cache.c:1.88 Sun Jun 12 03:35:56 2011
+++ src/sys/kern/vfs_cache.c Sun Aug 12 12:59:49 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.88.8.1 2012/08/12 12:59:49 martin 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.88.8.1 2012/08/12 12:59:49 martin 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.293 src/sys/nfs/nfs_vnops.c:1.293.4.1
--- src/sys/nfs/nfs_vnops.c:1.293 Mon Nov 28 08:05:06 2011
+++ src/sys/nfs/nfs_vnops.c Sun Aug 12 12:59:48 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: nfs_vnops.c,v 1.293 2011/11/28 08:05:06 tls Exp $ */
+/* $NetBSD: nfs_vnops.c,v 1.293.4.1 2012/08/12 12:59:48 martin Exp $ */
/*
* Copyright (c) 1989, 1993
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.293 2011/11/28 08:05:06 tls Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.293.4.1 2012/08/12 12:59:48 martin 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.2.4.1 src/sys/ufs/chfs/chfs_vnops.c:1.2.4.2
--- src/sys/ufs/chfs/chfs_vnops.c:1.2.4.1 Mon May 7 03:01:12 2012
+++ src/sys/ufs/chfs/chfs_vnops.c Sun Aug 12 12:59:48 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: chfs_vnops.c,v 1.2.4.1 2012/05/07 03:01:12 riz Exp $ */
+/* $NetBSD: chfs_vnops.c,v 1.2.4.2 2012/08/12 12:59:48 martin 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.67 src/sys/ufs/ext2fs/ext2fs_lookup.c:1.67.2.1
--- src/sys/ufs/ext2fs/ext2fs_lookup.c:1.67 Fri Jan 27 19:22:48 2012
+++ src/sys/ufs/ext2fs/ext2fs_lookup.c Sun Aug 12 12:59:48 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: ext2fs_lookup.c,v 1.67 2012/01/27 19:22:48 para Exp $ */
+/* $NetBSD: ext2fs_lookup.c,v 1.67.2.1 2012/08/12 12:59:48 martin Exp $ */
/*
* Modified for NetBSD 1.2E
@@ -48,7 +48,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ext2fs_lookup.c,v 1.67 2012/01/27 19:22:48 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ext2fs_lookup.c,v 1.67.2.1 2012/08/12 12:59:48 martin Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -536,9 +536,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)
@@ -686,9 +687,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.111 src/sys/ufs/ufs/ufs_lookup.c:1.111.8.1
--- src/sys/ufs/ufs/ufs_lookup.c:1.111 Sun Jul 17 22:07:59 2011
+++ src/sys/ufs/ufs/ufs_lookup.c Sun Aug 12 12:59:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: ufs_lookup.c,v 1.111 2011/07/17 22:07:59 dholland Exp $ */
+/* $NetBSD: ufs_lookup.c,v 1.111.8.1 2012/08/12 12:59:47 martin Exp $ */
/*
* Copyright (c) 1989, 1993
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ufs_lookup.c,v 1.111 2011/07/17 22:07:59 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ufs_lookup.c,v 1.111.8.1 2012/08/12 12:59:47 martin Exp $");
#ifdef _KERNEL_OPT
#include "opt_ffs.h"
@@ -485,8 +485,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;
@@ -640,8 +641,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: