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);
 }
 
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to