Deleted Added
full compact
vfs_cache.c (215281) vfs_cache.c (215283)
1/*-
2 * Copyright (c) 1989, 1993, 1995
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Poul-Henning Kamp of the FreeBSD Project.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 19 unchanged lines hidden (view full) ---

28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 *
32 * @(#)vfs_cache.c 8.5 (Berkeley) 3/22/95
33 */
34
35#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1989, 1993, 1995
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Poul-Henning Kamp of the FreeBSD Project.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 19 unchanged lines hidden (view full) ---

28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 *
32 * @(#)vfs_cache.c 8.5 (Berkeley) 3/22/95
33 */
34
35#include <sys/cdefs.h>
36__FBSDID("$FreeBSD: head/sys/kern/vfs_cache.c 215281 2010-11-14 06:09:50Z brucec $");
36__FBSDID("$FreeBSD: head/sys/kern/vfs_cache.c 215283 2010-11-14 08:06:29Z brucec $");
37
38#include "opt_kdtrace.h"
39#include "opt_ktrace.h"
40
41#include <sys/param.h>
42#include <sys/filedesc.h>
43#include <sys/fnv_hash.h>
44#include <sys/kernel.h>

--- 139 unchanged lines hidden (view full) ---

184
185/* Export size information to userland */
186SYSCTL_INT(_debug_sizeof, OID_AUTO, namecache, CTLFLAG_RD, 0,
187 sizeof(struct namecache), "sizeof(struct namecache)");
188
189/*
190 * The new name cache statistics
191 */
37
38#include "opt_kdtrace.h"
39#include "opt_ktrace.h"
40
41#include <sys/param.h>
42#include <sys/filedesc.h>
43#include <sys/fnv_hash.h>
44#include <sys/kernel.h>

--- 139 unchanged lines hidden (view full) ---

184
185/* Export size information to userland */
186SYSCTL_INT(_debug_sizeof, OID_AUTO, namecache, CTLFLAG_RD, 0,
187 sizeof(struct namecache), "sizeof(struct namecache)");
188
189/*
190 * The new name cache statistics
191 */
192static SYSCTL_NODE(_vfs, OID_AUTO, cache, CTLFLAG_RW, 0, "Name cache statistics");
192static SYSCTL_NODE(_vfs, OID_AUTO, cache, CTLFLAG_RW, 0,
193 "Name cache statistics");
193#define STATNODE(mode, name, var, descr) \
194 SYSCTL_ULONG(_vfs_cache, OID_AUTO, name, mode, var, 0, descr);
195STATNODE(CTLFLAG_RD, numneg, &numneg, "Number of negative cache entries");
196STATNODE(CTLFLAG_RD, numcache, &numcache, "Number of cache entries");
194#define STATNODE(mode, name, var, descr) \
195 SYSCTL_ULONG(_vfs_cache, OID_AUTO, name, mode, var, 0, descr);
196STATNODE(CTLFLAG_RD, numneg, &numneg, "Number of negative cache entries");
197STATNODE(CTLFLAG_RD, numcache, &numcache, "Number of cache entries");
197static u_long numcalls; STATNODE(CTLFLAG_RD, numcalls, &numcalls, "Number of cache lookups");
198static u_long dothits; STATNODE(CTLFLAG_RD, dothits, &dothits, "Number of '.' hits");
199static u_long dotdothits; STATNODE(CTLFLAG_RD, dotdothits, &dotdothits, "Number of '..' hits");
200static u_long numchecks; STATNODE(CTLFLAG_RD, numchecks, &numchecks, "Number of checks in lookup");
201static u_long nummiss; STATNODE(CTLFLAG_RD, nummiss, &nummiss, "Number of cache misses");
202static u_long nummisszap; STATNODE(CTLFLAG_RD, nummisszap, &nummisszap, "Number of cache misses we do not want to cache");
203static u_long numposzaps; STATNODE(CTLFLAG_RD, numposzaps, &numposzaps, "Number of cache hits (positive) we do not want to cache");
204static u_long numposhits; STATNODE(CTLFLAG_RD, numposhits, &numposhits, "Number of cache hits (positive)");
205static u_long numnegzaps; STATNODE(CTLFLAG_RD, numnegzaps, &numnegzaps, "Number of cache hits (negative) we do not want to cache");
206static u_long numneghits; STATNODE(CTLFLAG_RD, numneghits, &numneghits, "Number of cache hits (negative)");
207static u_long numupgrades; STATNODE(CTLFLAG_RD, numupgrades, &numupgrades, "Number of updates of the cache after lookup (write lock + retry)");
198static u_long numcalls; STATNODE(CTLFLAG_RD, numcalls, &numcalls,
199 "Number of cache lookups");
200static u_long dothits; STATNODE(CTLFLAG_RD, dothits, &dothits,
201 "Number of '.' hits");
202static u_long dotdothits; STATNODE(CTLFLAG_RD, dotdothits, &dotdothits,
203 "Number of '..' hits");
204static u_long numchecks; STATNODE(CTLFLAG_RD, numchecks, &numchecks,
205 "Number of checks in lookup");
206static u_long nummiss; STATNODE(CTLFLAG_RD, nummiss, &nummiss,
207 "Number of cache misses");
208static u_long nummisszap; STATNODE(CTLFLAG_RD, nummisszap, &nummisszap,
209 "Number of cache misses we do not want to cache");
210static u_long numposzaps; STATNODE(CTLFLAG_RD, numposzaps, &numposzaps,
211 "Number of cache hits (positive) we do not want to cache");
212static u_long numposhits; STATNODE(CTLFLAG_RD, numposhits, &numposhits,
213 "Number of cache hits (positive)");
214static u_long numnegzaps; STATNODE(CTLFLAG_RD, numnegzaps, &numnegzaps,
215 "Number of cache hits (negative) we do not want to cache");
216static u_long numneghits; STATNODE(CTLFLAG_RD, numneghits, &numneghits,
217 "Number of cache hits (negative)");
218static u_long numupgrades; STATNODE(CTLFLAG_RD, numupgrades, &numupgrades,
219 "Number of updates of the cache after lookup (write lock + retry)");
208
209SYSCTL_OPAQUE(_vfs_cache, OID_AUTO, nchstats, CTLFLAG_RD | CTLFLAG_MPSAFE,
220
221SYSCTL_OPAQUE(_vfs_cache, OID_AUTO, nchstats, CTLFLAG_RD | CTLFLAG_MPSAFE,
210 &nchstats, sizeof(nchstats), "LU", "VFS cache effectiveness statistics");
222 &nchstats, sizeof(nchstats), "LU",
223 "VFS cache effectiveness statistics");
211
212
213
214static void cache_zap(struct namecache *ncp);
215static int vn_vptocnp_locked(struct vnode **vp, struct ucred *cred, char *buf,
216 u_int *buflen);
217static int vn_fullpath1(struct thread *td, struct vnode *vp, struct vnode *rdir,
218 char *buf, char **retbuf, u_int buflen);

--- 757 unchanged lines hidden (view full) ---

976
977static int disablefullpath;
978SYSCTL_INT(_debug, OID_AUTO, disablefullpath, CTLFLAG_RW, &disablefullpath, 0,
979 "Disable the vn_fullpath function");
980
981/* These count for kern___getcwd(), too. */
982STATNODE(numfullpathcalls, "Number of fullpath search calls");
983STATNODE(numfullpathfail1, "Number of fullpath search errors (ENOTDIR)");
224
225
226
227static void cache_zap(struct namecache *ncp);
228static int vn_vptocnp_locked(struct vnode **vp, struct ucred *cred, char *buf,
229 u_int *buflen);
230static int vn_fullpath1(struct thread *td, struct vnode *vp, struct vnode *rdir,
231 char *buf, char **retbuf, u_int buflen);

--- 757 unchanged lines hidden (view full) ---

989
990static int disablefullpath;
991SYSCTL_INT(_debug, OID_AUTO, disablefullpath, CTLFLAG_RW, &disablefullpath, 0,
992 "Disable the vn_fullpath function");
993
994/* These count for kern___getcwd(), too. */
995STATNODE(numfullpathcalls, "Number of fullpath search calls");
996STATNODE(numfullpathfail1, "Number of fullpath search errors (ENOTDIR)");
984STATNODE(numfullpathfail2, "Number of fullpath search errors (VOP_VPTOCNP failures)");
997STATNODE(numfullpathfail2,
998 "Number of fullpath search errors (VOP_VPTOCNP failures)");
985STATNODE(numfullpathfail4, "Number of fullpath search errors (ENOMEM)");
986STATNODE(numfullpathfound, "Number of successful fullpath calls");
987
988/*
989 * Retrieve the full filesystem path that correspond to a vnode from the name
990 * cache (if available)
991 */
992int

--- 242 unchanged lines hidden ---
999STATNODE(numfullpathfail4, "Number of fullpath search errors (ENOMEM)");
1000STATNODE(numfullpathfound, "Number of successful fullpath calls");
1001
1002/*
1003 * Retrieve the full filesystem path that correspond to a vnode from the name
1004 * cache (if available)
1005 */
1006int

--- 242 unchanged lines hidden ---