1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

tdb2: enhance tdb1 porting document.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 9cbae0f976118472f0065eee674eacf6ab4b80c5)
This commit is contained in:
Rusty Russell 2011-09-14 08:13:27 +09:30
parent d96dfb24d1
commit fbf0783722

View File

@ -42,3 +42,31 @@ Interface differences between TDB1 and TDB2.
tdb_lockall_read(): child must call tdb_unlockall_read()
tdb_chainlock(): child must call tdb_chainunlock()
tdb_parse() callback: child must return from tdb_parse()
- tdb2 will not open a non-tdb file, even if O_CREAT is specified.
- There is no tdb_traverse_read. For operating on TDB1 files, you can
simulate it by tdb_add_flag(tdb, TDB_RDONLY); tdb_traverse();
tdb_remove_flag(tdb, TDB_RDONLY). This may be desirable because
traverse on TDB1 files use a write lock on the entire database
unless it's read-only.
- Failure inside a transaction (such as a lock function failing) does
not implicitly cancel the transaction; you still need to call
tdb_transaction_cancel().
TDB1 Compatibility:
- tdb2's offers a tdb1_incompatible_hash function, which is the same
as the default hash with the TDB_INCOMPATIBLE_HASH flag. There is
no way of marking an old TDB incompatible with versions < 1.2.6
while using any other hash.
- The TDB_ATTRIBUTE_TDB1_HASHSIZE attribute can be used to control the
hash size, but only when creating (ie. O_CREAT) a TDB1
(ie. TDB_VERSION1).
- There is no TDB_CLEAR_IF_FIRST flag; it has severe scalability and
API problems. If necessary, you can emulate this by using the open
hook and placing a 1-byte lock at offset 4. If your program forks,
you will need to place this lock again in the child.