Module Name: src Committed By: ad Date: Sat Mar 21 22:04:17 UTC 2020
Modified Files: src/sys/sys [ad-namecache]: namei.src Log Message: Move nc_key up, so cache_lookup_entry() only needs to touch one cache line at each step. To generate a diff of this commit: cvs rdiff -u -r1.47.2.7 -r1.47.2.8 src/sys/sys/namei.src Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/namei.src diff -u src/sys/sys/namei.src:1.47.2.7 src/sys/sys/namei.src:1.47.2.8 --- src/sys/sys/namei.src:1.47.2.7 Wed Mar 4 20:21:05 2020 +++ src/sys/sys/namei.src Sat Mar 21 22:04:17 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: namei.src,v 1.47.2.7 2020/03/04 20:21:05 ad Exp $ */ +/* $NetBSD: namei.src,v 1.47.2.8 2020/03/21 22:04:17 ad Exp $ */ /* * Copyright (c) 1985, 1989, 1991, 1993 @@ -199,11 +199,12 @@ NAMEIFL PARAMASK 0x02ef800 /* mask of pa #define NCHNAMLEN sizeof(((struct namecache *)NULL)->nc_name) /* - * Namecache entry. + * Namecache entry. * * This structure describes the elements in the cache of recent names looked * up by namei. It's carefully sized to take up 128 bytes on _LP64, to make - * good use of space and the CPU caches. + * good use of space and the CPU caches. Items used during RB tree lookup + * (nc_tree, nc_key) are clustered at the start of the structure. * * Field markings and their corresponding locks: * @@ -216,11 +217,11 @@ NAMEIFL PARAMASK 0x02ef800 /* mask of pa struct nchnode; struct namecache { struct rb_node nc_tree; /* d red-black tree, must be first */ + int64_t nc_key; /* - hash key */ TAILQ_ENTRY(namecache) nc_list; /* v vp's list of cache entries */ TAILQ_ENTRY(namecache) nc_lru; /* l pseudo-lru chain */ struct vnode *nc_dvp; /* - vnode of parent of name */ struct vnode *nc_vp; /* - vnode the name refers to */ - int64_t nc_key; /* - hash key */ int nc_lrulist; /* l which LRU list its on */ short nc_nlen; /* - length of the name */ char nc_whiteout; /* - true if a whiteout */