summaryrefslogtreecommitdiff
path: root/source3/lib/dbwrap_tdb.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2008-03-10 10:17:05 +0100
committerVolker Lendecke <vl@samba.org>2008-03-10 21:08:44 +0100
commit541b8dec4e21e0a88ccc0d85bc01433b66eb3588 (patch)
treec1c9ac30c8f5ae0c1bad8d775e95c332ddbd950f /source3/lib/dbwrap_tdb.c
parent69d67122b2935ce4e7691a9480444edecac1ab8c (diff)
downloadsamba-541b8dec4e21e0a88ccc0d85bc01433b66eb3588.tar.gz
samba-541b8dec4e21e0a88ccc0d85bc01433b66eb3588.tar.bz2
samba-541b8dec4e21e0a88ccc0d85bc01433b66eb3588.zip
Add transactions to the dbwrap API
Only filled in for tdb so far, for rbt it's pointless, and ctdb itself needs to be extended (This used to be commit 0a55e018dd68af06d84332d54148bbfb0b510b22)
Diffstat (limited to 'source3/lib/dbwrap_tdb.c')
-rw-r--r--source3/lib/dbwrap_tdb.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/source3/lib/dbwrap_tdb.c b/source3/lib/dbwrap_tdb.c
index da55049e52..7bdadd3770 100644
--- a/source3/lib/dbwrap_tdb.c
+++ b/source3/lib/dbwrap_tdb.c
@@ -291,6 +291,27 @@ static int db_tdb_get_seqnum(struct db_context *db)
return tdb_get_seqnum(db_ctx->wtdb->tdb);
}
+static int db_tdb_transaction_start(struct db_context *db)
+{
+ struct db_tdb_ctx *db_ctx =
+ talloc_get_type_abort(db->private_data, struct db_tdb_ctx);
+ return tdb_transaction_start(db_ctx->wtdb->tdb);
+}
+
+static int db_tdb_transaction_commit(struct db_context *db)
+{
+ struct db_tdb_ctx *db_ctx =
+ talloc_get_type_abort(db->private_data, struct db_tdb_ctx);
+ return tdb_transaction_commit(db_ctx->wtdb->tdb);
+}
+
+static int db_tdb_transaction_cancel(struct db_context *db)
+{
+ struct db_tdb_ctx *db_ctx =
+ talloc_get_type_abort(db->private_data, struct db_tdb_ctx);
+ return tdb_transaction_cancel(db_ctx->wtdb->tdb);
+}
+
struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
const char *name,
int hash_size, int tdb_flags,
@@ -324,6 +345,9 @@ struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
result->traverse_read = db_tdb_traverse_read;
result->get_seqnum = db_tdb_get_seqnum;
result->persistent = ((tdb_flags & TDB_CLEAR_IF_FIRST) == 0);
+ result->transaction_start = db_tdb_transaction_start;
+ result->transaction_commit = db_tdb_transaction_commit;
+ result->transaction_cancel = db_tdb_transaction_cancel;
return result;
fail: