diff options
| author | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2009-10-06 10:52:31 +1100 |
|---|---|---|
| committer | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2009-10-06 10:52:31 +1100 |
| commit | 71e42591509bc5bd7ba4a2ccb512cee0f71a2d07 (patch) | |
| tree | 468c2e82411353345358f93e2fdf2744ab94d22f | |
| parent | 3133dadd8f5637f4633eee563a3aa315124993a9 (diff) | |
add a new function to collect a list of all active nodes EXCEPT a certain node
(This used to be ctdb commit be52954d921e7d443304cf49fbd488c619a9c4ec)
| -rw-r--r-- | ctdb/client/ctdb_client.c | 34 | ||||
| -rw-r--r-- | ctdb/include/ctdb.h | 4 |
2 files changed, 38 insertions, 0 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c index 9621435398..b8cc30194c 100644 --- a/ctdb/client/ctdb_client.c +++ b/ctdb/client/ctdb_client.c @@ -2975,6 +2975,40 @@ uint32_t *list_of_active_nodes(struct ctdb_context *ctdb, return nodes; } +uint32_t *list_of_active_nodes_except_pnn(struct ctdb_context *ctdb, + struct ctdb_node_map *node_map, + TALLOC_CTX *mem_ctx, + uint32_t pnn) +{ + int i, j, num_nodes; + uint32_t *nodes; + + for (i=num_nodes=0;i<node_map->num;i++) { + if (node_map->nodes[i].flags & NODE_FLAGS_INACTIVE) { + continue; + } + if (node_map->nodes[i].pnn == pnn) { + continue; + } + num_nodes++; + } + + nodes = talloc_array(mem_ctx, uint32_t, num_nodes); + CTDB_NO_MEMORY_FATAL(ctdb, nodes); + + for (i=j=0;i<node_map->num;i++) { + if (node_map->nodes[i].flags & NODE_FLAGS_INACTIVE) { + continue; + } + if (node_map->nodes[i].pnn == pnn) { + continue; + } + nodes[j++] = node_map->nodes[i].pnn; + } + + return nodes; +} + uint32_t *list_of_connected_nodes(struct ctdb_context *ctdb, struct ctdb_node_map *node_map, TALLOC_CTX *mem_ctx, diff --git a/ctdb/include/ctdb.h b/ctdb/include/ctdb.h index a5d9d1fb45..bf689dc8ab 100644 --- a/ctdb/include/ctdb.h +++ b/ctdb/include/ctdb.h @@ -581,6 +581,10 @@ uint32_t *list_of_vnnmap_nodes(struct ctdb_context *ctdb, struct ctdb_vnn_map *vnn_map, TALLOC_CTX *mem_ctx, bool include_self); +uint32_t *list_of_active_nodes_except_pnn(struct ctdb_context *ctdb, + struct ctdb_node_map *node_map, + TALLOC_CTX *mem_ctx, + uint32_t pnn); int ctdb_read_pnn_lock(int fd, int32_t pnn); |
