tdb: TDB_INCOMPATIBLE_HASH, to allow safe changing of default hash.
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 24 Sep 2010 06:15:11 +0000 (15:45 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 7 Oct 2010 04:47:38 +0000 (15:17 +1030)
commitdd86b24ae5307fe09d4ae22b7070d747013a2b07
tree23492811775652cb9eb6b6613ea479209b144ade
parent3f7ed2b46cb304d553d3f7bd34554d695b8ccc52
tdb: TDB_INCOMPATIBLE_HASH, to allow safe changing of default hash.

This flag to tdb_open/tdb_open_ex effects creation of a new database:
1) Uses the Jenkins lookup3 hash instead of the old gdbm hash if none is
   specified,
2) Places a non-zero field in header->rwlocks, so older versions of TDB will
   refuse to open it.

This means that the caller (ie Samba) can set this flag to safely
change the hash function.  Versions of TDB from this one on will either
use the correct hash or refuse to open (if a different hash is specified).
Older TDB versions will see the nonzero rwlocks field and refuse to open
it under any conditions.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
lib/tdb/common/check.c
lib/tdb/common/open.c
lib/tdb/common/tdb_private.h
lib/tdb/configure.ac
lib/tdb/include/tdb.h