version 1.70, 2007/07/09 21:10:57 |
version 1.71, 2007/11/07 00:23:25 |
Line 86 u_long ncvhash; /* size of hash table |
|
Line 86 u_long ncvhash; /* size of hash table |
|
TAILQ_HEAD(, namecache) nclruhead; /* LRU chain */ |
TAILQ_HEAD(, namecache) nclruhead; /* LRU chain */ |
struct nchstats nchstats; /* cache effectiveness statistics */ |
struct nchstats nchstats; /* cache effectiveness statistics */ |
|
|
POOL_INIT(namecache_pool, sizeof(struct namecache), 0, 0, 0, "ncachepl", |
static pool_cache_t namecache_cache; |
&pool_allocator_nointr, IPL_NONE); |
|
|
|
MALLOC_DEFINE(M_CACHE, "namecache", "Dynamically allocated cache entries"); |
MALLOC_DEFINE(M_CACHE, "namecache", "Dynamically allocated cache entries"); |
|
|
|
|
cache_free(struct namecache *ncp) |
cache_free(struct namecache *ncp) |
{ |
{ |
|
|
pool_put(&namecache_pool, ncp); |
pool_cache_put(namecache_cache, ncp); |
numcache--; |
numcache--; |
} |
} |
|
|
Line 462 cache_enter(struct vnode *dvp, struct vn |
|
Line 461 cache_enter(struct vnode *dvp, struct vn |
|
if (numcache < numvnodes) { |
if (numcache < numvnodes) { |
numcache++; |
numcache++; |
mutex_exit(&namecache_lock); |
mutex_exit(&namecache_lock); |
ncp = pool_get(&namecache_pool, PR_WAITOK); |
ncp = pool_cache_get(namecache_cache, PR_WAITOK); |
memset(ncp, 0, sizeof(*ncp)); |
memset(ncp, 0, sizeof(*ncp)); |
mutex_enter(&namecache_lock); |
mutex_enter(&namecache_lock); |
} else if ((ncp = TAILQ_FIRST(&nclruhead)) != NULL) { |
} else if ((ncp = TAILQ_FIRST(&nclruhead)) != NULL) { |
|
|
nchinit(void) |
nchinit(void) |
{ |
{ |
|
|
|
namecache_cache = pool_cache_init(sizeof(struct namecache), 0, 0, 0, |
|
"ncachepl", NULL, IPL_NONE, NULL, NULL, NULL); |
|
KASSERT(namecache_cache != NULL); |
|
|
mutex_init(&namecache_lock, MUTEX_DEFAULT, IPL_NONE); |
mutex_init(&namecache_lock, MUTEX_DEFAULT, IPL_NONE); |
TAILQ_INIT(&nclruhead); |
TAILQ_INIT(&nclruhead); |
nchashtbl = |
nchashtbl = |