From 763eb16380986959aeb8c2cc6111f1d9cdb7b17d Mon Sep 17 00:00:00 2001 From: Benjamin Kaduk Date: Mon, 12 Jan 2015 16:34:21 -0500 Subject: [PATCH] vol: Switch to Jenkins hash for volume hash table While here, bump the default size from 256 to 1024. Change-Id: Ife95f14009764785a18556289d5dfe5e7a96b477 Reviewed-on: http://gerrit.openafs.org/11667 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot --- src/vol/volume.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/vol/volume.c b/src/vol/volume.c index 01595ecc4..a3175a2df 100644 --- a/src/vol/volume.c +++ b/src/vol/volume.c @@ -37,6 +37,7 @@ # include #endif #include +#include #include @@ -196,9 +197,11 @@ pthread_t vol_glock_holder = 0; * an AVL or splay tree might work a lot better, but we'll just increase * the default hash table size for now */ -#define DEFAULT_VOLUME_HASH_SIZE 256 /* Must be a power of 2!! */ -#define DEFAULT_VOLUME_HASH_MASK (DEFAULT_VOLUME_HASH_SIZE-1) -#define VOLUME_HASH(volumeId) (volumeId&(VolumeHashTable.Mask)) +#define DEFAULT_VOLUME_HASH_BITS 10 +#define DEFAULT_VOLUME_HASH_SIZE opr_jhash_size(DEFAULT_VOLUME_HASH_BITS) +#define DEFAULT_VOLUME_HASH_MASK opr_jhash_mask(DEFAULT_VOLUME_HASH_BITS) +#define VOLUME_HASH(volumeId) \ + (opr_jhash_int(volumeId, 0) & VolumeHashTable.Mask) /* * turn volume hash chains into partially ordered lists. @@ -8418,8 +8421,8 @@ VSetVolHashSize(int logsize) } if (!VInit) { - VolumeHashTable.Size = 1 << logsize; - VolumeHashTable.Mask = VolumeHashTable.Size - 1; + VolumeHashTable.Size = opr_jhash_size(logsize); + VolumeHashTable.Mask = opr_jhash_mask(logsize); } else { /* we can't yet support runtime modification of this * parameter. we'll need a configuration rwlock to -- 2.39.5