summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2009-09-20 23:58:27 +0200
committerStefan Metzmacher <metze@samba.org>2009-12-16 08:03:48 +0100
commit886cb3e86dcb1144002e1c046977de95a0860d5f (patch)
treea7abfbbebeef44441d673df10f936c3696d46efc
parent168bb40b4b72f9331c04638458a5968c920537e9 (diff)
downloadsamba-886cb3e86dcb1144002e1c046977de95a0860d5f.tar.gz
samba-886cb3e86dcb1144002e1c046977de95a0860d5f.tar.xz
samba-886cb3e86dcb1144002e1c046977de95a0860d5f.zip
tdb:tdbtool: add transaction_start/_commit/_cancel commands.
So one can perform tdbtool operations protected by transactions. Michael (cherry picked from samba commit 91e1bab2e9a3f33151061554f2dcf05bcb728312) Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit 35a5b874b925380f7c227e47aebb590c9db4739e)
-rw-r--r--ctdb/lib/tdb/tools/tdbtool.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/ctdb/lib/tdb/tools/tdbtool.c b/ctdb/lib/tdb/tools/tdbtool.c
index 7a02703461..cef4ee8d35 100644
--- a/ctdb/lib/tdb/tools/tdbtool.c
+++ b/ctdb/lib/tdb/tools/tdbtool.c
@@ -40,6 +40,9 @@ static int disable_mmap;
enum commands {
CMD_CREATE_TDB,
CMD_OPEN_TDB,
+ CMD_TRANSACTION_START,
+ CMD_TRANSACTION_COMMIT,
+ CMD_TRANSACTION_CANCEL,
CMD_ERASE,
CMD_DUMP,
CMD_INSERT,
@@ -70,6 +73,9 @@ typedef struct {
COMMAND_TABLE cmd_table[] = {
{"create", CMD_CREATE_TDB},
{"open", CMD_OPEN_TDB},
+ {"transaction_start", CMD_TRANSACTION_START},
+ {"transaction_commit", CMD_TRANSACTION_COMMIT},
+ {"transaction_cancel", CMD_TRANSACTION_CANCEL},
{"erase", CMD_ERASE},
{"dump", CMD_DUMP},
{"insert", CMD_INSERT},
@@ -169,6 +175,9 @@ static void help(void)
"tdbtool: \n"
" create dbname : create a database\n"
" open dbname : open an existing database\n"
+" transaction_start : start a transaction\n"
+" transaction_commit : commit a transaction\n"
+" transaction_cancel : cancel a transaction\n"
" erase : erase the database\n"
" dump : dump the database as strings\n"
" keys : dump the database keys as strings\n"
@@ -520,6 +529,18 @@ static int do_command(void)
return 0;
}
switch (mycmd) {
+ case CMD_TRANSACTION_START:
+ bIterate = 0;
+ tdb_transaction_start(tdb);
+ return 0;
+ case CMD_TRANSACTION_COMMIT:
+ bIterate = 0;
+ tdb_transaction_commit(tdb);
+ return 0;
+ case CMD_TRANSACTION_CANCEL:
+ bIterate = 0;
+ tdb_transaction_cancel(tdb);
+ return 0;
case CMD_ERASE:
bIterate = 0;
tdb_traverse(tdb, do_delete_fn, NULL);