summaryrefslogtreecommitdiff
path: root/lib/tdb_compat
Commit message (Collapse)AuthorAgeFilesLines
* tdb-compat: Add tdb_chainlock_nonblockVolker Lendecke2012-04-172-0/+26
|
* lib/tdb_compat: Do not define BUILD_TDB2 if we are not building tdb2Andrew Bartlett2012-04-111-3/+1
| | | | | | | The simple fact that this was defined at all, even to false, caused some of the tdb2 build code to run. Andrew Bartlett
* tdb_compat: only use hashsize attribute when O_CREATRusty Russell2012-01-301-1/+1
| | | | | | | | tdb2 complains if you specify a tdb1 hashsize, and you're not actually trying to create a new database. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: add "TDB_COMPAT_USE_TDB2" environment variableRusty Russell2011-09-211-0/+4
| | | | | | | | | | | | When BUILD_TDB2 is defined, add TDB_VERSION1 flag to all tdb_open() calls, unless this flag is set. This means we use the tdb1 on-disk format unless the user specifically asks for tdb2. We'd love to do this using loadparm, but we need to work with both Samba 3 and Samba 4's loadparm, and they're not unified yet. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: honour hashsize arg when using tdb2 with TDB_VERSION1 flag.Rusty Russell2011-09-212-3/+10
| | | | | | | We use the TDB_ATTRIBUTE_TDB1_HASHSIZE to set the hash size. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: handle TDB_VOLATILE flag.Rusty Russell2011-09-212-2/+12
| | | | | | | | | This is only meaningful when using the TDB_VERSION1 flag: we set the attribute to control the maximum number of dead records (to 5, which is what TDB_VOLATILE did for tdb1). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: handle TDB_INCOMPATIBLE_HASH flag.Rusty Russell2011-09-212-2/+12
| | | | | | | | | This is only meaningful when using the TDB_VERSION1 flag: it is done by using a magic hash value (which will fall back to the default hash if that works instead). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: change offset of CLEAR_IF_FIRST lock.Rusty Russell2011-09-141-2/+2
| | | | | | | | | | This makes it match tdb1, which mean it will Just Work as TDB2 gets tdb1 format support. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User: Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date: Wed Sep 14 02:21:29 CEST 2011 on sn-devel-104
* tdb_compat: support tdb_reopen/tdb_reopen_all for TDB2Rusty Russell2011-09-142-3/+49
| | | | | | | | This matters with the clear-if-first support: we need to re-establish those locks at this point. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: make tdb2s temporarily read-only for tdb_traverse_read()Rusty Russell2011-09-142-2/+27
| | | | | | | | | It doesn't make a difference unless the tdb2 opens a TDB1 on disk, in which case tdb1_traverse() takes a write lock on the entire file. By setting the tdb to read-only first, we simulate the old behaviour. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: adapt to tdb2 API change.Rusty Russell2011-09-142-0/+3
| | | | | | | Add the ecode arg to all the log functions, and log it. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: respect TDB_NO_FSYNC environment variable for tdb2.Rusty Russell2011-06-201-0/+6
| | | | | | | | | | | I don't think this kind of hack belongs in the tdb2 source, but SAMBA uses it to speed testing, so we should respect it: handle it in our compat open wrapper. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User: Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date: Mon Jun 20 12:32:08 CEST 2011 on sn-devel-104
* tdb2: tie it into build process if --enable-tdb2-breaks-compatRusty Russell2011-06-201-2/+13
| | | | | | | | | | | This is simplistic. We need to support making TDB2 a standalone library, but for now, we simply built it in-tree. Once we have tdb1 compatibility in tdb2, we can rename this option to --enable-tdb2. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat.h: divert every tdb build and includes to tdb_compatRusty Russell2011-06-201-1/+10
| | | | | | | | We change all the headers and wscript files to use tdb_compat; this means we have one place to decide whether to use TDB1 or TDB2. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lib/tdb_compat: header for tdb1 vs tdb2.Rusty Russell2011-06-203-0/+239
TDB2's API is slightly different from TDB1. In particular, all functions return 0 (TDB_SUCCESS) or a negative error number, rather than -1 or tdb_null and storing the error in tdb_error() (though TDB2 does that as well). The simplest fix is to replace all the different functions with a wrapper, and that is done here. Compatibility functions: tdb_null: not used as an error return, so not defined by tdb2. tdb_fetch_compat: TDB1-style data-returning tdb_fetch. tdb_firstkey_compat: TDB1-style data-returning tdb_firstkey tdb_nextkey_compat: TDB1-style data-returning tdb_nextkey, with TDB2-style free of old key. tdb_errorstr_compat: TDB1-style tdb_errorstr() which takes TDB instead of ecode. TDB_CONTEXT: TDB1-style typedef for struct tdb_context. tdb_open_compat: Simplified open routine which takes log function, sets TDB_ALLOW_NESTING as Samba expects, and adds TDB_CLEAR_IF_FIRST support. Things defined away in TDB2 wrappers: tdb_traverse_read: TDB2's tdb_traverse only uses read-locks anyway. tdb_reopen/tdb_reopen_all: TDB2 detects this error itself. TDB_INCOMPATIBLE_HASH: TDB2 uses the Jenkins hash already. TDB_VOLATILE: TDB2 shouldn't have freelist scaling issues. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>