mirror of
https://github.com/samba-team/samba.git
synced 2025-02-28 01:58:17 +03:00
change the signature for ctdb_ctrl_getnodemap() so that a timeout
parameter is added. change ctdb_get_connected_nodes in the same way (This used to be ctdb commit d85f23bcf4c1230225abb2f4a053c70b68d469aa)
This commit is contained in:
parent
be17d4d181
commit
ae73784c28
@ -893,8 +893,9 @@ int ctdb_ctrl_getdbmap(struct ctdb_context *ctdb, uint32_t destnode, TALLOC_CTX
|
||||
/*
|
||||
get a list of nodes (vnn and flags ) from a remote node
|
||||
*/
|
||||
int ctdb_ctrl_getnodemap(struct ctdb_context *ctdb, uint32_t destnode,
|
||||
TALLOC_CTX *mem_ctx, struct ctdb_node_map **nodemap)
|
||||
int ctdb_ctrl_getnodemap(struct ctdb_context *ctdb,
|
||||
struct timeval timeout, uint32_t destnode,
|
||||
TALLOC_CTX *mem_ctx, struct ctdb_node_map **nodemap)
|
||||
{
|
||||
int ret;
|
||||
TDB_DATA data, outdata;
|
||||
@ -903,7 +904,7 @@ int ctdb_ctrl_getnodemap(struct ctdb_context *ctdb, uint32_t destnode,
|
||||
ZERO_STRUCT(data);
|
||||
ret = ctdb_control(ctdb, destnode, 0,
|
||||
CTDB_CONTROL_GET_NODEMAP, 0, data,
|
||||
ctdb, &outdata, &res, NULL);
|
||||
ctdb, &outdata, &res, &timeout);
|
||||
if (ret != 0 || res != 0) {
|
||||
DEBUG(0,(__location__ " ctdb_control for getnodes failed\n"));
|
||||
return -1;
|
||||
@ -1253,8 +1254,10 @@ int ctdb_ctrl_set_debuglevel(struct ctdb_context *ctdb, uint32_t destnode, uint3
|
||||
/*
|
||||
get a list of connected nodes
|
||||
*/
|
||||
uint32_t *ctdb_get_connected_nodes(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx,
|
||||
uint32_t *num_nodes)
|
||||
uint32_t *ctdb_get_connected_nodes(struct ctdb_context *ctdb,
|
||||
struct timeval timeout,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32_t *num_nodes)
|
||||
{
|
||||
struct ctdb_node_map *map=NULL;
|
||||
int ret, i;
|
||||
@ -1262,7 +1265,7 @@ uint32_t *ctdb_get_connected_nodes(struct ctdb_context *ctdb, TALLOC_CTX *mem_ct
|
||||
|
||||
*num_nodes = 0;
|
||||
|
||||
ret = ctdb_ctrl_getnodemap(ctdb, CTDB_CURRENT_NODE, mem_ctx, &map);
|
||||
ret = ctdb_ctrl_getnodemap(ctdb, timeout, CTDB_CURRENT_NODE, mem_ctx, &map);
|
||||
if (ret != 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -26,7 +26,7 @@
|
||||
#include "../include/ctdb.h"
|
||||
#include "../include/ctdb_private.h"
|
||||
|
||||
static int timeout = 0;
|
||||
static int timed_out = 0;
|
||||
|
||||
/*
|
||||
show usage message
|
||||
@ -42,7 +42,7 @@ static void usage(void)
|
||||
void timeout_func(struct event_context *ev, struct timed_event *te,
|
||||
struct timeval t, void *private_data)
|
||||
{
|
||||
timeout = 1;
|
||||
timed_out = 1;
|
||||
}
|
||||
|
||||
|
||||
@ -50,6 +50,8 @@ void recoverd(struct ctdb_context *ctdb, struct event_context *ev)
|
||||
{
|
||||
uint32_t vnn;
|
||||
TALLOC_CTX *mem_ctx=NULL;
|
||||
struct ctdb_node_map *nodemap=NULL;
|
||||
int ret;
|
||||
|
||||
again:
|
||||
if (mem_ctx) {
|
||||
@ -64,9 +66,9 @@ again:
|
||||
|
||||
|
||||
/* we only check for recovery once every second */
|
||||
timeout = 0;
|
||||
timed_out = 0;
|
||||
event_add_timed(ctdb->ev, mem_ctx, timeval_current_ofs(1, 0), timeout_func, ctdb);
|
||||
while (!timeout) {
|
||||
while (!timed_out) {
|
||||
event_loop_once(ev);
|
||||
}
|
||||
|
||||
@ -76,6 +78,11 @@ again:
|
||||
printf("our node number is :%d\n",vnn);
|
||||
|
||||
/* get number of nodes */
|
||||
ret = ctdb_ctrl_getnodemap(ctdb, timeval_current_ofs(1, 0), vnn, mem_ctx, &nodemap);
|
||||
if (ret != 0) {
|
||||
printf("Unable to get nodemap from node %u\n", vnn);
|
||||
goto again;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -224,7 +224,8 @@ struct ctdb_node_map {
|
||||
uint32_t num;
|
||||
struct ctdb_node_and_flags nodes[1];
|
||||
};
|
||||
int ctdb_ctrl_getnodemap(struct ctdb_context *ctdb, uint32_t destnode,
|
||||
int ctdb_ctrl_getnodemap(struct ctdb_context *ctdb,
|
||||
struct timeval timeout, uint32_t destnode,
|
||||
TALLOC_CTX *mem_ctx, struct ctdb_node_map **nodemap);
|
||||
|
||||
struct ctdb_key_list {
|
||||
@ -275,7 +276,9 @@ int ctdb_ctrl_getrecmode(struct ctdb_context *ctdb, uint32_t destnode, uint32_t
|
||||
*/
|
||||
int ctdb_ctrl_setrecmode(struct ctdb_context *ctdb, uint32_t destnode, uint32_t recmode);
|
||||
|
||||
uint32_t *ctdb_get_connected_nodes(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx,
|
||||
uint32_t *ctdb_get_connected_nodes(struct ctdb_context *ctdb,
|
||||
struct timeval timeout,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32_t *num_nodes);
|
||||
|
||||
int ctdb_status_reset(struct ctdb_context *ctdb, uint32_t destnode);
|
||||
|
@ -127,7 +127,7 @@ static int control_status_all(struct ctdb_context *ctdb)
|
||||
uint32_t *nodes;
|
||||
uint32_t num_nodes;
|
||||
|
||||
nodes = ctdb_get_connected_nodes(ctdb, ctdb, &num_nodes);
|
||||
nodes = ctdb_get_connected_nodes(ctdb, timeval_current_ofs(1, 0), ctdb, &num_nodes);
|
||||
CTDB_NO_MEMORY(ctdb, nodes);
|
||||
|
||||
ZERO_STRUCT(status);
|
||||
@ -197,7 +197,7 @@ static int control_status_reset_all(struct ctdb_context *ctdb)
|
||||
uint32_t *nodes;
|
||||
uint32_t num_nodes;
|
||||
|
||||
nodes = ctdb_get_connected_nodes(ctdb, ctdb, &num_nodes);
|
||||
nodes = ctdb_get_connected_nodes(ctdb, timeval_current_ofs(1, 0), ctdb, &num_nodes);
|
||||
CTDB_NO_MEMORY(ctdb, nodes);
|
||||
|
||||
for (i=0;i<num_nodes;i++) {
|
||||
@ -260,7 +260,7 @@ static int control_recover(struct ctdb_context *ctdb, int argc, const char **arg
|
||||
|
||||
/* 1: find a list of all nodes */
|
||||
printf("\n1: fetching list of nodes\n");
|
||||
ret = ctdb_ctrl_getnodemap(ctdb, vnn, ctdb, &nodemap);
|
||||
ret = ctdb_ctrl_getnodemap(ctdb, timeval_current_ofs(1, 0), vnn, ctdb, &nodemap);
|
||||
if (ret != 0) {
|
||||
printf("Unable to get nodemap from node %u\n", vnn);
|
||||
return ret;
|
||||
@ -624,7 +624,7 @@ static int control_getnodemap(struct ctdb_context *ctdb, int argc, const char **
|
||||
|
||||
vnn = strtoul(argv[0], NULL, 0);
|
||||
|
||||
ret = ctdb_ctrl_getnodemap(ctdb, vnn, ctdb, &nodemap);
|
||||
ret = ctdb_ctrl_getnodemap(ctdb, timeval_current_ofs(1, 0), vnn, ctdb, &nodemap);
|
||||
if (ret != 0) {
|
||||
printf("Unable to get nodemap from node %u\n", vnn);
|
||||
return ret;
|
||||
@ -795,7 +795,7 @@ static int control_ping(struct ctdb_context *ctdb, int argc, const char **argv)
|
||||
uint32_t *nodes;
|
||||
uint32_t num_nodes;
|
||||
|
||||
nodes = ctdb_get_connected_nodes(ctdb, ctdb, &num_nodes);
|
||||
nodes = ctdb_get_connected_nodes(ctdb, timeval_current_ofs(1, 0), ctdb, &num_nodes);
|
||||
CTDB_NO_MEMORY(ctdb, nodes);
|
||||
|
||||
for (i=0;i<num_nodes;i++) {
|
||||
@ -822,7 +822,7 @@ static int control_debuglevel(struct ctdb_context *ctdb, int argc, const char **
|
||||
uint32_t *nodes;
|
||||
uint32_t num_nodes;
|
||||
|
||||
nodes = ctdb_get_connected_nodes(ctdb, ctdb, &num_nodes);
|
||||
nodes = ctdb_get_connected_nodes(ctdb, timeval_current_ofs(1, 0), ctdb, &num_nodes);
|
||||
CTDB_NO_MEMORY(ctdb, nodes);
|
||||
|
||||
for (i=0;i<num_nodes;i++) {
|
||||
@ -865,7 +865,7 @@ static int control_debug(struct ctdb_context *ctdb, int argc, const char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
nodes = ctdb_get_connected_nodes(ctdb, ctdb, &num_nodes);
|
||||
nodes = ctdb_get_connected_nodes(ctdb, timeval_current_ofs(1, 0), ctdb, &num_nodes);
|
||||
CTDB_NO_MEMORY(ctdb, nodes);
|
||||
for (i=0;i<num_nodes;i++) {
|
||||
ret = ctdb_ctrl_set_debuglevel(ctdb, nodes[i], level);
|
||||
|
Loading…
x
Reference in New Issue
Block a user