summaryrefslogtreecommitdiffstats
path: root/ctdb/client
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-08-23 16:52:24 +1000
committerAmitay Isaacs <amitay@gmail.com>2013-10-04 15:15:34 +1000
commit4ca9b9611424eb99ea20d4158079dfcdce746f0d (patch)
treeef64f42afb76f6f23d564fd881ec8ef6804ce917 /ctdb/client
parent5d47f28e159872a2d3452320c9907b943c22f01d (diff)
downloadsamba-4ca9b9611424eb99ea20d4158079dfcdce746f0d.tar.gz
samba-4ca9b9611424eb99ea20d4158079dfcdce746f0d.tar.xz
samba-4ca9b9611424eb99ea20d4158079dfcdce746f0d.zip
client: Add ctdb_ctrl_getdbseqnum() function
Signed-off-by: Amitay Isaacs <amitay@gmail.com> (This used to be ctdb commit 8cb1fbbfe88327c9c7ab68e8eded586dff611e57)
Diffstat (limited to 'ctdb/client')
-rw-r--r--ctdb/client/ctdb_client.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c
index 9addc63151b..43670519c1a 100644
--- a/ctdb/client/ctdb_client.c
+++ b/ctdb/client/ctdb_client.c
@@ -1859,6 +1859,40 @@ int ctdb_ctrl_getdbhealth(struct ctdb_context *ctdb,
}
/*
+ * get db sequence number
+ */
+int ctdb_ctrl_getdbseqnum(struct ctdb_context *ctdb, struct timeval timeout,
+ uint32_t destnode, uint32_t dbid, uint64_t *seqnum)
+{
+ int ret;
+ int32_t res;
+ TDB_DATA data, outdata;
+
+ data.dptr = (uint8_t *)&dbid;
+ data.dsize = sizeof(uint64_t); /* This is just wrong */
+
+ ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_GET_DB_SEQNUM,
+ 0, data, ctdb, &outdata, &res, &timeout, NULL);
+ if (ret != 0 || res != 0) {
+ DEBUG(DEBUG_ERR,("ctdb_control for getdbesqnum failed\n"));
+ return -1;
+ }
+
+ if (outdata.dsize != sizeof(uint64_t)) {
+ DEBUG(DEBUG_ERR,("Invalid return data in get_dbseqnum\n"));
+ talloc_free(outdata.dptr);
+ return -1;
+ }
+
+ if (seqnum != NULL) {
+ *seqnum = *(uint64_t *)outdata.dptr;
+ }
+ talloc_free(outdata.dptr);
+
+ return 0;
+}
+
+/*
create a database
*/
int ctdb_ctrl_createdb(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode,