summaryrefslogtreecommitdiffstats
path: root/ctdb/lib/tdb/common/open.c
Commit message (Collapse)AuthorAgeFilesLines
* ctdb-build: Remove duplicate tdb libraryAmitay Isaacs2014-06-201-671/+0
| | | | | Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Michael Adam <obnox@samba.org>
* tdb: Sync to tdb 1.2.11 from upstreamAmitay Isaacs2013-05-291-4/+28
| | | | (This used to be ctdb commit bb3a32ec055432afc7225c9fd7504fb187694bda)
* lib/tdb: Sync tdb from samba git treeAmitay Isaacs2012-04-131-14/+47
| | | | | | Signed-off-by: Amitay Isaacs <amitay@gmail.com> (This used to be ctdb commit 0f40ea2386892ae10b30beeded0e00edf4c019c3)
* tdb: TDB_INCOMPATIBLE_HASH, to allow safe changing of default hash.Rusty Russell2010-10-071-3/+18
| | | | | | | | | | | | | | | | | | 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> (This used to be ctdb commit dd86b24ae5307fe09d4ae22b7070d747013a2b07)
* tdb: automatically identify Jenkins hash tdbsRusty Russell2010-10-071-14/+27
| | | | | | | | | | | | If the caller to tdb_open_ex() doesn't specify a hash, and tdb_old_hash doesn't match, try tdb_jenkins_hash. This was Metze's idea: it makes life simpler, especially with the upcoming TDB_INCOMPATIBLE_HASH flag. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (This used to be ctdb commit 3f7ed2b46cb304d553d3f7bd34554d695b8ccc52)
* tdb: add Bob Jenkins lookup3 hash as helper hash.Rusty Russell2010-10-071-15/+1
| | | | | | | | | | | | 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)
* lib/tdb: fix c++ build warning in tdb_header_hash().Günther Deschner2010-10-071-1/+1
| | | | | | Guenther (This used to be ctdb commit e34e639c214b010ff18140b769a8c9245c92006f)
* tdb: added TDB_NO_FSYNC env variableAndrew Tridgell2010-10-071-0/+4
| | | | | | this might help reduce test times and load on test machines (This used to be ctdb commit 5c4240c364c52073ca64fddf2aa2c1593db0093b)
* tdb: put example hashes into header, so we notice incorrect hash_fn.Rusty Russell2010-10-071-1/+54
| | | | | | | | | | | | This is Stefan Metzmacher <metze@samba.org>'s patch with minor changes: 1) Use the TDB_MAGIC constant so both hashes aren't of strings. 2) Check the hash in tdb_check (paranoia, really). 3) Additional check in the (unlikely!) case where both examples hash to 0. 4) Cosmetic changes to var names and complaint message. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (This used to be ctdb commit 63c582c99128c3623e270e8425966cab7744fb2f)
* tdb: remove unused variable in tdb_new_database().Rusty Russell2010-08-161-1/+0
| | | | | | (Imported from SAMBA 2eab1d7fdcb54f9ec27431ca4858eb64cb1bd835) (This used to be ctdb commit 52a87e608d0406aee9df99f7ac3ce16e834b520b)
* tdb: fix short write logic in tdb_new_databaseRusty Russell2010-08-161-15/+1
| | | | | | | | | | | | | | Commit 207a213c/24fed55d purported to fix the problem of signals during tdb_new_database (which could cause a spurious short write, hence a failure). However, the code is wrong: newdb+written is not correct. Fix this by introducing a general tdb_write_all() and using it here and in the tracing code. Cc: Stefan Metzmacher <metze@samba.org> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (This used to be ctdb commit 27ba0e5a6681063225df7244a85aa304c51c6948)
* tdb: Fix indentation in tdb_new_database()Volker Lendecke2010-04-221-1/+1
| | | | | | (Imported from commit 59315887a07033316edf91c0c57563eee5ea992d) (This used to be ctdb commit fa38f818c71c85918e673ff563bf7a91a0c4cc17)
* Fix some nonempty blank linesVolker Lendecke2010-04-221-4/+4
| | | | | | (Imported from commit ea8e0d5d54b020c530e392c4edaeed43e20af303) (This used to be ctdb commit 7161cb1607bb105cd6f4f32df50f519314e77b3f)
* tdb: use tdb_nest_lock() for active lock.Rusty Russell2010-04-221-5/+10
| | | | | | | | | | | | | Use our newly-generic nested lock tracking for the active lock. Note that the tdb_have_extra_locks() and tdb_release_extra_locks() functions have to skip over this lock now it is tracked. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from commit 4738d474c412cc59d26fcea64007e99094e8b675) (This used to be ctdb commit 0a44584963232b0b1c62e30c9bede0439e68ef7d)
* tdb: use tdb_nest_lock() for open lock.Rusty Russell2010-04-221-2/+3
| | | | | | | | | | | | | | | This never nests, so it's overkill, but it centralizes the locking into lock.c and removes the ugly flag in the transaction code to track whether we have the lock or not. Note that we have a temporary hack so this places a real lock, despite the fact that we are in a transaction. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from commit 9136818df30c7179e1cffa18201cdfc990ebd7b7) (This used to be ctdb commit 6812d81907793299e874f121174d885f6500f374)
* tdb: cleanup: tdb_have_extra_locks() helperRusty Russell2010-04-221-1/+1
| | | | | | | | | | | | | In many places we check whether locks are held: add a helper to do this. The _tdb_lockall() case has already checked for the allrecord lock, so the extra work done by tdb_have_extra_locks() is merely redundant. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from commit fba42f1fb4f81b8913cce5a23ca5350ba45f40e1) (This used to be ctdb commit dda3587dfee598f387c2e696f3645486fac65052)
* tdb: cleanup: rename global_lock to allrecord_lock.Rusty Russell2010-04-221-1/+1
| | | | | | | | | | | | | The word global is overloaded in tdb. The global_lock inside struct tdb_context is used to indicate we hold a lock across all the chains. Rename it to allrecord_lock. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from commit e9114a758538d460d4f9deae5ce631bf44b1eff8) (This used to be ctdb commit a912657fb50a78b9b328c4564281fb9f7f1b3766)
* tdb: cleanup: rename GLOBAL_LOCK to OPEN_LOCK.Rusty Russell2010-04-221-4/+4
| | | | | | | | | | | | | | The word global is overloaded in tdb. The GLOBAL_LOCK offset is used at open time to serialize initialization (and by the transaction code to block open). Rename it to OPEN_LOCK. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from commit 7ab422d6fbd4f8be02838089a41f872d538ee7a7) (This used to be ctdb commit a4f83910a485cf56f9b3df1dcf2ad36ebec57473)
* tdb: cleanup: split brlock and brunlock methods.Rusty Russell2010-04-221-9/+9
| | | | | | | | | | | | | | | | | | | | | This is taken from the CCAN code base: rather than using tdb_brlock for locking and unlocking, we split it into brlock and brunlock functions. For extra debugging information, brunlock says what kind of lock it is unlocking (even though fnctl locks don't need this). This requires an extra argument to tdb_transaction_unlock() so we know whether the lock was upgraded to a write lock or not. We also use a "flags" argument tdb_brlock: 1) TDB_LOCK_NOWAIT replaces lck_type = F_SETLK (vs F_SETLKW). 2) TDB_LOCK_MARK_ONLY replaces setting TDB_MARK_LOCK bit in ltype. 3) TDB_LOCK_PROBE replaces the "probe" argument. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from commit 452b4a5a6efeecfb5c83475f1375ddc25bcddfbe) (This used to be ctdb commit 7b5fdc9c588237c83a1e70e5437e2e5510055b92)
* tdb: add TDB_DISALLOW_NESTING and make TDB_ALLOW_NESTING the default behaviorStefan Metzmacher2009-12-161-0/+17
| | | | | | | | | | | | | | | We need to keep TDB_ALLOW_NESTING as default behavior, so that existing code continues to work. However we may change the default together with a major version number change in future. metze (cherry picked from samba commit 3b9f19ed919fef2e88b2f92ae541e07bc7379cd1) Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit c1c0ede32dc00ed619d1cf5fda40a9de43995f3a)
* tdb: always set tdb->tracefd to -1 to be safe on goto failStefan Metzmacher2009-12-161-4/+3
| | | | | | | | | metze (cherry picked from samba commit 85449b7bcc4bd7948bea38b5514a02357950a002) Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit 855391c1e37012b0d6c673a304bb8da8a1efcd72)
* tdb: reset tdb->fd to -1 in tdb_close()Kirill Smelkov2009-12-161-1/+3
| | | | | | | | | | | | | So that erroneous double tdb_close() calls do not try to close() same fd again. This is like SAFE_FREE() but for fd. Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (cherry picked from samba commit b4424f8234a78a79fb2d71d46ca208b4f12e0f9e) Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit f5c992bdaeb73ef726ff4728a9922721474cd6f5)
* lib/tdb: wean off TDB_ERRCODE.Rusty Russell2009-12-161-2/+4
| | | | | | | | | | | | | | | It was a regrettable hack which I used to reduce line count in tdb; in fact it caused confusion as can be seen in this patch. In particular, ecode now needs to be set before TDB_LOG anyway, and having it exposed in the header is useless (the struct tdb_context isn't defined, so it's doubly useless). Also, we should never set errno, as io.c was doing. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (cherry picked from samba commit b77f41d58b05101e02d8ac0e54cb0e30807d89c2) Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit a6620f6e74aadc708395b21b42303d1082192fcc)
* lib/tdb: TDB_TRACE support (for developers)Rusty Russell2009-12-161-2/+29
| | | | | | | | | | | | | | | | | | When TDB_TRACE is defined (in tdb_private.h), verbose tracing of tdb operations is enabled. This can be replayed using "replay_trace" from http://ccan.ozlabs.org/info/tdb. The majority of this patch comes from moving internal functions to _<funcname> to avoid double-tracing. There should be no additional overhead for the normal (!TDB_TRACE) case. Note that the verbose traces compress really well with rzip. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (cherry picked from samba commit 703004340c3e0f43f741bd368d2525cfd187d590) Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit b01b756cb577f32a1ec4597efb00017241e01685)
* lib/tdb: don't overwrite TDBs with different version numbers.Rusty Russell2009-12-161-5/+7
| | | | | | | | | | | In future, this may happen, and we don't want to clobber them. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (cherry picked from samba commit 398d0c2929026fccb3409316720a4dcad225ab05) Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit eebd467961dad6cfb38c2a5d6e4b4dbf86e55e63)
* Add define guards around otherwise unused variable. Jeremy. (cherry picked ↵Jeremy Allison2009-12-161-0/+3
| | | | | | | | from samba commit 4fc9f9c3f943cdeb27e37f0ee068cdd0da7cb00c) Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit 6f8614de0f20d4c507aecd744d9c3f6545078127)
* tdb: don't alter tdb->flags in tdb_reopen_all()Rusty Russell2009-08-041-6/+13
| | | | | | | | | The flags are user-visible, via tdb_get_flags/add_flags/remove_flags. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit 8f48e37c254e0852d4e2dea54b905ce5ef2b925d)
* tdb: Reimplementation of Metze's "lib/tdb: if we know pwrite and pread are ↵Rusty Russell2009-08-041-5/+10
| | | | | | | | | | | | | | | | | | | | | thread/fork safe tdb_reopen_all() should be a noop". This version just wraps the reopen code, so we still re-grab the lock and do the normal sanity checks. The reason we do this at all is to avoid global fd limits, see: http://forums.fedoraforum.org/showthread.php?t=210393 Note also that this whole reopen concept is fundamentally racy: if the parent goes away before the child calls tdb_reopen_all, the database can be left without an active lock and another TDB_CLEAR_IF_FIRST opener will clear it. A fork_with_tdbs() wrapper could use a pipe to solve this, but it's hardly elegant (what if there are other independent things which have similar needs?). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit 8d0d432ab7766d9c0f9868fd77e48b9b5cc5d9f9)
* merge from samba4Andrew Tridgell2008-01-181-4/+2
| | | | (This used to be ctdb commit 21245b894b32f232251fd7c0e2fbfd073fb10514)
* merge from Samba4Andrew Tridgell2008-01-051-4/+25
| | | | (This used to be ctdb commit 9aed7a1d065272c2e5b54872228a73f37664b526)
* convert tdb from u32 to uint32_t to match the current Samba treesAndrew Tridgell2008-01-051-5/+5
| | | | (This used to be ctdb commit 0dc754b7e8b0985a252885ed043949dfb7ea1ae1)
* make sure we set close on exec on any possibly inherited fdsAndrew Tridgell2007-09-191-0/+5
| | | | (This used to be ctdb commit d9dec82076f14a348e7b67b4350180681ff86f32)
* update lib/tdb from samba4Andrew Tridgell2007-07-101-2/+1
| | | | (This used to be ctdb commit 96a39ccee38bcfd64d614fe4670766e59ef246b6)
* update lib/replace from samba4Andrew Tridgell2007-07-101-1/+1
| | | | (This used to be ctdb commit f0555484105668c01c21f56322992e752e831109)
* merge local copy of tdb from samba4 tdbAndrew Tridgell2007-04-161-13/+13
| | | | (This used to be ctdb commit d4619ce98ce44acaebeb6ae9c516a7917bf4e27f)
* added rest of tdb (missed in earlier commit)Andrew Tridgell2007-02-201-0/+465
(This used to be ctdb commit 4c1434cc4613fc94958de0aa882bf7ca41ec8458)