diff options
author | Amitay Isaacs <amitay@gmail.com> | 2013-08-23 16:52:24 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@gmail.com> | 2013-10-04 15:15:34 +1000 |
commit | 4ca9b9611424eb99ea20d4158079dfcdce746f0d (patch) | |
tree | ef64f42afb76f6f23d564fd881ec8ef6804ce917 | |
parent | 5d47f28e159872a2d3452320c9907b943c22f01d (diff) | |
download | samba-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)
-rw-r--r-- | ctdb/client/ctdb_client.c | 34 | ||||
-rw-r--r-- | ctdb/include/ctdb_client.h | 2 |
2 files changed, 36 insertions, 0 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c index 9addc63151..43670519c1 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, diff --git a/ctdb/include/ctdb_client.h b/ctdb/include/ctdb_client.h index 9d1a4d367a..35ce6d1b26 100644 --- a/ctdb/include/ctdb_client.h +++ b/ctdb/include/ctdb_client.h @@ -293,6 +293,8 @@ int ctdb_ctrl_getdbhealth(struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid, TALLOC_CTX *mem_ctx, const char **reason); +int ctdb_ctrl_getdbseqnum(struct ctdb_context *ctdb, struct timeval timeout, + uint32_t destnode, uint32_t dbid, uint64_t *seqnum); int ctdb_ctrl_createdb(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, TALLOC_CTX *mem_ctx, const char *name, bool persistent); int ctdb_ctrl_process_exists(struct ctdb_context *ctdb, uint32_t destnode, pid_t pid); |