diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2010-09-24 15:34:06 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2010-10-07 15:17:05 +1030 |
commit | 9faf6888d47dc28c60e94491f2e3759b3a6d59e2 (patch) | |
tree | ccba06db0a04bf6122ba682e18eb3e51795c66e4 /ctdb/lib/tdb/common/open.c | |
parent | 140592fe13711ab23d2970e79cd07dd92b1815a7 (diff) | |
download | samba-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.c | 16 |
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"; } |