summaryrefslogtreecommitdiff
path: root/lib/tdb2/tdb1_transaction.c
AgeCommit message (Collapse)AuthorFilesLines
2011-09-14tdb2: merge tdb1_context into tdb_context.Rusty Russell1-173/+174
Finally, we split out the tdb2-specific parts of tdb_context, and put them into a "tdb2" sub-struct; the tdb1 parts go into a "tdb1" sub-struct. We get rido of tdb1_context and use tdb_context everywhere. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit bbeb528e74c0e234e1f724ac8d54be404cfc6f9a)
2011-09-14tdb2: use tdb->flags & TDB_RDONLY instead of tdb->read_only for TDB1 code.Rusty Russell1-2/+2
There's also a semantic change here: for tdb1, being read-only meant no locking, and it was an error to try to lock a r/o database. For TDB2, you'd need to specify TDB_NOLOCK, which suppresses locking silently. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 4dc29a338fadeac805b369b4b0851c02f1b152c7)
2011-09-14tdb2: don't cancel transactions on lock failures in tdb1 backend.Rusty Russell1-5/+3
In TDB2, the user can override locking functions, so they may deliberarely fail (eg. be non-blocking) expecting to retry. For this reason, the TDB2 API requires the caller to cancel the transaction if tdb_transaction_prepare_commit() fails. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 8458811a4126c22635b974718bfbf2876c893c37)
2011-09-14tdb2: suppress tdb1 backend logging when locking returns EINTR or EAGAINRusty Russell1-8/+15
The TDB1 code logs multiple times on errors; we must prevent that in the limited case where locking fails. With TDB2, this can happen due to the lock function attribute, where the user supplies replacement locking functions which are allowed to return with errno EAGAIN or EINTR for various special-effects. Flooding the logs for this is unfriendly. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit a391b2b900bc6d5c0467869a454bdb5c51b5a3be)
2011-09-14tdb2: Make tdb1 use the tdb_file structure.Rusty Russell1-18/+18
Because tdb2 allows multiple opens of the same TDB, we separate out the file information from the struct tdb_context. Do the same for tdb1. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 60210a73ec08a7b34ba637ad19e6749cf6dc1952)
2011-09-14tdb2: Make TDB1 code use TDB2's open flags.Rusty Russell1-16/+7
This means getting rid of TDB_VOLATILE (perhaps we should use an attribute for that?), TDB_INCOMPATIBLE_HASH (use the tdb_attribute_hash for that) and TDB_CLEAR_IF_FIRST (use the tdb_attribute_openhook for that). We also get rid of TDB_DISALLOW_NESTING: that's the default for TDB2. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 22d0e0dc59fc9d7e0046fec6971ef478c2d604fd)
2011-09-14tdb2: Make tdb1 share tdb_store flags, struct tdb_data and TDB_MAGIC_FOOD.Rusty Russell1-3/+3
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 8a47d50d72ea62e378dc92b150c92c1317c73fa3)
2011-09-14tdb2: make TDB1 code use tdb2's TDB_ERROR and tdb_logerr()Rusty Russell1-88/+143
To do this, we make sure that the first few fields of tdb1_context and tdb_context are the same. This sweep also fixes up a few paths where we weren't setting tdb->ecode before our old logging function. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 919937354a331bb964564a11b5a5b80403ff8db9)
2011-09-14tdb2: get rid of TDB1 mark and nonblock functions.Rusty Russell1-8/+4
We do this using hooks in tdb2. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 444fade529f68eb2b0aebbc8de442478c5c6f916)
2011-09-14tdb2: remove _PUBLIC_ in tdb1 functions.Rusty Russell1-4/+4
They'll all be accessed via the tdb2 API. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 39f55294799c6443c0ad7bef09f1c113cf89d295)
2011-09-14tdb2: Remove unused tdb1 functions.Rusty Russell1-5/+0
We're going to use TDB2's API, so some TDB1 APIs are obviously unnecessary. We also get rid of USE_RIGHT_MERGES and TRACE code. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit b929638e3cfe629285af3ecd0813e03eaeaa1133)
2011-09-14tdb2: import TDB1 code.Rusty Russell1-0/+1271
We import the entire codebase, putting a "tdb1_" prefix on the files and changing the "tdb_" prefix to "tdb1_" everywhere. The next patches will gradually merge it with the TDB2 code where necessary. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 19e6c1a250ade1e7204ada17163294855585e825)