summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormjg <mjg@FreeBSD.org>2017-03-16 08:39:36 +0000
committermjg <mjg@FreeBSD.org>2017-03-16 08:39:36 +0000
commit3e5c2d0427df746d69810604155d49d0d488ec9e (patch)
tree5346bda945e3286a2a95358f9526bd25173b790a
parent9be1f44d7125c284462637c1261170f9e98a18dc (diff)
downloadFreeBSD-src-3e5c2d0427df746d69810604155d49d0d488ec9e.zip
FreeBSD-src-3e5c2d0427df746d69810604155d49d0d488ec9e.tar.gz
MFC r312889:
cache: annotate with __read_mostly and __exclusive_cache_line
-rw-r--r--sys/kern/vfs_cache.c49
1 files changed, 24 insertions, 25 deletions
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index 9b95eff..093c249 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -200,48 +200,47 @@ struct namecache_ts {
*/
#define NCHHASH(hash) \
(&nchashtbl[(hash) & nchash])
-static LIST_HEAD(nchashhead, namecache) *nchashtbl; /* Hash Table */
-static u_long nchash; /* size of hash table */
+static __read_mostly LIST_HEAD(nchashhead, namecache) *nchashtbl;/* Hash Table */
+static u_long __read_mostly nchash; /* size of hash table */
SYSCTL_ULONG(_debug, OID_AUTO, nchash, CTLFLAG_RD, &nchash, 0,
"Size of namecache hash table");
-static u_long ncnegfactor = 16; /* ratio of negative entries */
+static u_long __read_mostly ncnegfactor = 16; /* ratio of negative entries */
SYSCTL_ULONG(_vfs, OID_AUTO, ncnegfactor, CTLFLAG_RW, &ncnegfactor, 0,
"Ratio of negative namecache entries");
-static u_long numneg; /* number of negative entries allocated */
+static u_long __exclusive_cache_line numneg; /* number of negative entries allocated */
SYSCTL_ULONG(_debug, OID_AUTO, numneg, CTLFLAG_RD, &numneg, 0,
"Number of negative entries in namecache");
-static u_long numcache; /* number of cache entries allocated */
+static u_long __exclusive_cache_line numcache;/* number of cache entries allocated */
SYSCTL_ULONG(_debug, OID_AUTO, numcache, CTLFLAG_RD, &numcache, 0,
"Number of namecache entries");
-static u_long numcachehv; /* number of cache entries with vnodes held */
+static u_long __exclusive_cache_line numcachehv;/* number of cache entries with vnodes held */
SYSCTL_ULONG(_debug, OID_AUTO, numcachehv, CTLFLAG_RD, &numcachehv, 0,
"Number of namecache entries with vnodes held");
-u_int ncsizefactor = 2;
+u_int __read_mostly ncsizefactor = 2;
SYSCTL_UINT(_vfs, OID_AUTO, ncsizefactor, CTLFLAG_RW, &ncsizefactor, 0,
"Size factor for namecache");
-static u_int ncpurgeminvnodes;
+static u_int __read_mostly ncpurgeminvnodes;
SYSCTL_UINT(_vfs, OID_AUTO, ncpurgeminvnodes, CTLFLAG_RW, &ncpurgeminvnodes, 0,
"Number of vnodes below which purgevfs ignores the request");
-static u_int ncneghitsrequeue = 8;
+static u_int __read_mostly ncneghitsrequeue = 8;
SYSCTL_UINT(_vfs, OID_AUTO, ncneghitsrequeue, CTLFLAG_RW, &ncneghitsrequeue, 0,
"Number of hits to requeue a negative entry in the LRU list");
struct nchstats nchstats; /* cache effectiveness statistics */
static struct mtx ncneg_shrink_lock;
+static int shrink_list_turn;
struct neglist {
struct mtx nl_lock;
TAILQ_HEAD(, namecache) nl_list;
} __aligned(CACHE_LINE_SIZE);
-static struct neglist *neglists;
+static struct neglist __read_mostly *neglists;
static struct neglist ncneg_hot;
-static int shrink_list_turn;
-
#define numneglists (ncneghash + 1)
-static u_int ncneghash;
+static u_int __read_mostly ncneghash;
static inline struct neglist *
NCP2NEGLIST(struct namecache *ncp)
{
@@ -250,14 +249,14 @@ NCP2NEGLIST(struct namecache *ncp)
}
#define numbucketlocks (ncbuckethash + 1)
-static u_int ncbuckethash;
-static struct rwlock_padalign *bucketlocks;
+static u_int __read_mostly ncbuckethash;
+static struct rwlock_padalign __read_mostly *bucketlocks;
#define HASH2BUCKETLOCK(hash) \
((struct rwlock *)(&bucketlocks[((hash) & ncbuckethash)]))
#define numvnodelocks (ncvnodehash + 1)
-static u_int ncvnodehash;
-static struct mtx *vnodelocks;
+static u_int __read_mostly ncvnodehash;
+static struct mtx __read_mostly *vnodelocks;
static inline struct mtx *
VP2VNODELOCK(struct vnode *vp)
{
@@ -272,10 +271,10 @@ VP2VNODELOCK(struct vnode *vp)
* most common. The large cache is used for entries which are too big to
* fit in the small cache.
*/
-static uma_zone_t cache_zone_small;
-static uma_zone_t cache_zone_small_ts;
-static uma_zone_t cache_zone_large;
-static uma_zone_t cache_zone_large_ts;
+static uma_zone_t __read_mostly cache_zone_small;
+static uma_zone_t __read_mostly cache_zone_small_ts;
+static uma_zone_t __read_mostly cache_zone_large;
+static uma_zone_t __read_mostly cache_zone_large_ts;
#define CACHE_PATH_CUTOFF 35
@@ -341,7 +340,7 @@ cache_out_ts(struct namecache *ncp, struct timespec *tsp, int *ticksp)
*ticksp = ((struct namecache_ts *)ncp)->nc_ticks;
}
-static int doingcache = 1; /* 1 => enable the cache */
+static int __read_mostly doingcache = 1; /* 1 => enable the cache */
SYSCTL_INT(_debug, OID_AUTO, vfscache, CTLFLAG_RW, &doingcache, 0,
"VFS namecache enabled");
@@ -357,7 +356,7 @@ static SYSCTL_NODE(_vfs, OID_AUTO, cache, CTLFLAG_RW, 0,
#define STATNODE_ULONG(name, descr) \
SYSCTL_ULONG(_vfs_cache, OID_AUTO, name, CTLFLAG_RD, &name, 0, descr);
#define STATNODE_COUNTER(name, descr) \
- static counter_u64_t name; \
+ static counter_u64_t __read_mostly name; \
SYSCTL_COUNTER_U64(_vfs_cache, OID_AUTO, name, CTLFLAG_RD, &name, descr);
STATNODE_ULONG(numneg, "Number of negative cache entries");
STATNODE_ULONG(numcache, "Number of cache entries");
@@ -2032,7 +2031,7 @@ vfs_cache_lookup(struct vop_lookup_args *ap)
/*
* XXX All of these sysctls would probably be more productive dead.
*/
-static int disablecwd;
+static int __read_mostly disablecwd;
SYSCTL_INT(_debug, OID_AUTO, disablecwd, CTLFLAG_RW, &disablecwd, 0,
"Disable the getcwd syscall");
@@ -2091,7 +2090,7 @@ kern___getcwd(struct thread *td, char *buf, enum uio_seg bufseg, u_int buflen,
* Thus begins the fullpath magic.
*/
-static int disablefullpath;
+static int __read_mostly disablefullpath;
SYSCTL_INT(_debug, OID_AUTO, disablefullpath, CTLFLAG_RW, &disablefullpath, 0,
"Disable the vn_fullpath function");
OpenPOWER on IntegriCloud