svn commit: r245663 - stable/9/sys/fs/nullfs
Konstantin Belousov
kib at FreeBSD.org
Sat Jan 19 06:34:41 UTC 2013
Author: kib
Date: Sat Jan 19 06:34:41 2013
New Revision: 245663
URL: http://svnweb.freebsd.org/changeset/base/245663
Log:
MFC r245408:
Size the nullfs hashtbl based on the current value of
desiredvnodes. Use vfs_hash_index() to calculate the hash bucket for a
given vnode.
Modified:
stable/9/sys/fs/nullfs/null_subr.c
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/fs/nullfs/null_subr.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_subr.c Sat Jan 19 06:31:37 2013 (r245662)
+++ stable/9/sys/fs/nullfs/null_subr.c Sat Jan 19 06:34:41 2013 (r245663)
@@ -46,9 +46,6 @@
#include <fs/nullfs/null.h>
-#define LOG2_SIZEVNODE 8 /* log2(sizeof struct vnode) */
-#define NNULLNODECACHE 16
-
/*
* Null layer cache:
* Each cache entry holds a reference to the lower vnode
@@ -57,12 +54,11 @@
* alias is removed the lower vnode is vrele'd.
*/
-#define NULL_NHASH(vp) \
- (&null_node_hashtbl[(((uintptr_t)vp)>>LOG2_SIZEVNODE) & null_node_hash])
+#define NULL_NHASH(vp) (&null_node_hashtbl[vfs_hash_index(vp) & null_hash_mask])
static LIST_HEAD(null_node_hashhead, null_node) *null_node_hashtbl;
-static u_long null_node_hash;
-struct mtx null_hashmtx;
+static struct mtx null_hashmtx;
+static u_long null_hash_mask;
static MALLOC_DEFINE(M_NULLFSHASH, "nullfs_hash", "NULLFS hash table");
MALLOC_DEFINE(M_NULLFSNODE, "nullfs_node", "NULLFS vnode private part");
@@ -77,8 +73,8 @@ nullfs_init(vfsp)
struct vfsconf *vfsp;
{
- NULLFSDEBUG("nullfs_init\n"); /* printed during system boot */
- null_node_hashtbl = hashinit(NNULLNODECACHE, M_NULLFSHASH, &null_node_hash);
+ null_node_hashtbl = hashinit(desiredvnodes, M_NULLFSHASH,
+ &null_hash_mask);
mtx_init(&null_hashmtx, "nullhs", NULL, MTX_DEF);
return (0);
}
@@ -89,7 +85,7 @@ nullfs_uninit(vfsp)
{
mtx_destroy(&null_hashmtx);
- free(null_node_hashtbl, M_NULLFSHASH);
+ hashdestroy(null_node_hashtbl, M_NULLFSHASH, null_hash_mask);
return (0);
}
More information about the svn-src-stable-9
mailing list