From 0e436b46c6051fed5a4d854f993bb635919700f1 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 2 Dec 2009 12:51:37 +0100 Subject: client: add ctdb_ctrl_getdbhealth() metze (This used to be ctdb commit 5abe44d0113839d3a45c9a31d30856aa70c2ea1f) --- ctdb/client/ctdb_client.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'ctdb/client') diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c index b623bfe352..6158fe2410 100644 --- a/ctdb/client/ctdb_client.c +++ b/ctdb/client/ctdb_client.c @@ -1497,6 +1497,44 @@ int ctdb_ctrl_getdbname(struct ctdb_context *ctdb, struct timeval timeout, uint3 return 0; } +/* + get the health status of a db + */ +int ctdb_ctrl_getdbhealth(struct ctdb_context *ctdb, + struct timeval timeout, + uint32_t destnode, + uint32_t dbid, TALLOC_CTX *mem_ctx, + const char **reason) +{ + int ret; + int32_t res; + TDB_DATA data; + + data.dptr = (uint8_t *)&dbid; + data.dsize = sizeof(dbid); + + ret = ctdb_control(ctdb, destnode, 0, + CTDB_CONTROL_DB_GET_HEALTH, 0, data, + mem_ctx, &data, &res, &timeout, NULL); + if (ret != 0 || res != 0) { + return -1; + } + + if (data.dsize == 0) { + (*reason) = NULL; + return 0; + } + + (*reason) = talloc_strndup(mem_ctx, (const char *)data.dptr, data.dsize); + if ((*reason) == NULL) { + return -1; + } + + talloc_free(data.dptr); + + return 0; +} + /* create a database */ -- cgit