diff options
author | Volker Lendecke <vl@samba.org> | 2008-03-10 10:17:05 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-03-10 21:08:44 +0100 |
commit | 541b8dec4e21e0a88ccc0d85bc01433b66eb3588 (patch) | |
tree | c1c9ac30c8f5ae0c1bad8d775e95c332ddbd950f /source3/lib/dbwrap_tdb.c | |
parent | 69d67122b2935ce4e7691a9480444edecac1ab8c (diff) | |
download | samba-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.c | 24 |
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: |