From: Rusty Russell Date: Mon, 15 Nov 2010 07:19:11 +0000 (+1030) Subject: tdb2: minor optimization for set_header X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=8afb9681b3be7149cf8913a5aefe915194fd20f7 tdb2: minor optimization for set_header We actually only need the bottom 5 bits of the hash value, so don't waste 8 bytes passing it. --- diff --git a/ccan/tdb2/free.c b/ccan/tdb2/free.c index 2b07fdff..e6e77bf6 100644 --- a/ccan/tdb2/free.c +++ b/ccan/tdb2/free.c @@ -516,7 +516,7 @@ static tdb_off_t get_free(struct tdb_context *tdb, size_t size, int set_header(struct tdb_context *tdb, struct tdb_used_record *rec, uint64_t keylen, uint64_t datalen, - uint64_t actuallen, uint64_t hash, + uint64_t actuallen, unsigned hashlow, unsigned int zone_bits) { uint64_t keybits = (fls64(keylen) + 1) / 2; @@ -524,7 +524,7 @@ int set_header(struct tdb_context *tdb, /* Use bottom bits of hash, so it's independent of hash table size. */ rec->magic_and_meta = zone_bits - | ((hash & ((1 << 5)-1)) << 6) + | ((hashlow & ((1 << 5)-1)) << 6) | ((actuallen - (keylen + datalen)) << 11) | (keybits << 43) | (TDB_MAGIC << 48); diff --git a/ccan/tdb2/private.h b/ccan/tdb2/private.h index 6c727aff..6780fdad 100644 --- a/ccan/tdb2/private.h +++ b/ccan/tdb2/private.h @@ -380,7 +380,7 @@ int add_free_record(struct tdb_context *tdb, unsigned int zone_bits, int set_header(struct tdb_context *tdb, struct tdb_used_record *rec, uint64_t keylen, uint64_t datalen, - uint64_t actuallen, uint64_t hash, + uint64_t actuallen, unsigned hashlow, unsigned int zone_bits); /* Used by tdb_check to verify. */