summaryrefslogtreecommitdiffstats
path: root/ctdb/lib/tdb/common/open.c
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2010-09-24 15:34:06 +0930
committerRusty Russell <rusty@rustcorp.com.au>2010-10-07 15:17:05 +1030
commit9faf6888d47dc28c60e94491f2e3759b3a6d59e2 (patch)
treeccba06db0a04bf6122ba682e18eb3e51795c66e4 /ctdb/lib/tdb/common/open.c
parent140592fe13711ab23d2970e79cd07dd92b1815a7 (diff)
downloadsamba-9faf6888d47dc28c60e94491f2e3759b3a6d59e2.tar.gz
samba-9faf6888d47dc28c60e94491f2e3759b3a6d59e2.tar.xz
samba-9faf6888d47dc28c60e94491f2e3759b3a6d59e2.zip
tdb: add Bob Jenkins lookup3 hash as helper hash.
This is a better hash than the default: shipping it with tdb makes it easy for callers to use it as the hash by passing it to tdb_open_ex(). This version taken from CCAN and modified, which took it from http://www.burtleburtle.net/bob/c/lookup3.c. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (This used to be ctdb commit 58c9d90c758aa7c062d84ab97f62947190526356)
Diffstat (limited to 'ctdb/lib/tdb/common/open.c')
-rw-r--r--ctdb/lib/tdb/common/open.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/ctdb/lib/tdb/common/open.c b/ctdb/lib/tdb/common/open.c
index a9649945095..f0e2dfc7e1b 100644
--- a/ctdb/lib/tdb/common/open.c
+++ b/ctdb/lib/tdb/common/open.c
@@ -30,20 +30,6 @@
/* all contexts, to ensure no double-opens (fcntl locks don't nest!) */
static struct tdb_context *tdbs = NULL;
-
-/* This is based on the hash algorithm from gdbm */
-static unsigned int default_tdb_hash(TDB_DATA *key)
-{
- uint32_t value; /* Used to compute the hash value. */
- uint32_t i; /* Used to cycle through random values. */
-
- /* Set the initial value from the key size. */
- for (value = 0x238F13AF * key->dsize, i=0; i < key->dsize; i++)
- value = (value + (key->dptr[i] << (i*5 % 24)));
-
- return (1103515243 * value + 12345);
-}
-
/* We use two hashes to double-check they're using the right hash function. */
void tdb_header_hash(struct tdb_context *tdb,
uint32_t *magic1_hash, uint32_t *magic2_hash)
@@ -191,7 +177,7 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
tdb->hash_fn = hash_fn;
hash_alg = "user defined";
} else {
- tdb->hash_fn = default_tdb_hash;
+ tdb->hash_fn = tdb_old_hash;
hash_alg = "default";
}