determine_algorithm(state->tun_list),
(state->tun_list->no_ip_takeover != 0),
(state->tun_list->no_ip_failback != 0),
- (state->tun_list->no_ip_host_on_all_disabled != 0),
state->force_rebalance_nodes);
if (tevent_req_nomem(state->ipalloc_state, req)) {
return;
enum ipalloc_algorithm algorithm,
bool no_ip_takeover,
bool no_ip_failback,
- bool no_ip_host_on_all_disabled,
uint32_t *force_rebalance_nodes)
{
struct ipalloc_state *ipalloc_state =
ipalloc_state->algorithm = algorithm;
ipalloc_state->no_ip_takeover = no_ip_takeover;
ipalloc_state->no_ip_failback = no_ip_failback;
- ipalloc_state->no_ip_host_on_all_disabled = no_ip_host_on_all_disabled;
ipalloc_state->force_rebalance_nodes = force_rebalance_nodes;
return ipalloc_state;
return true;
}
-static bool all_nodes_are_disabled(struct ctdb_node_map *nodemap)
-{
- int i;
-
- for (i=0;i<nodemap->num;i++) {
- if (!(nodemap->node[i].flags &
- (NODE_FLAGS_INACTIVE|NODE_FLAGS_DISABLED))) {
- /* Found one completely healthy node */
- return false;
- }
- }
-
- return true;
-}
-
/* Set internal flags for IP allocation:
* Clear ip flags
* Set NOIPHOST ip flag for each INACTIVE node
- * if all nodes are disabled:
- * Set NOIPHOST ip flags from per-node NoIPHostOnAllDisabled tunable
- * else
- * Set NOIPHOST ip flags for disabled nodes
+ * Set NOIPHOST ip flag for each DISABLED node
*/
void ipalloc_set_node_flags(struct ipalloc_state *ipalloc_state,
struct ctdb_node_map *nodemap)
{
int i;
- bool all_disabled = all_nodes_are_disabled(nodemap);
for (i=0;i<nodemap->num;i++) {
/* Can not host IPs on INACTIVE node */
bitmap_set(ipalloc_state->noiphost, i);
}
- /* If node is disabled then it can only host IPs if
- * all nodes are disabled and NoIPHostOnAllDisabled is
- * unset
- */
+ /* Can not host IPs on DISABLED node */
if (nodemap->node[i].flags & NODE_FLAGS_DISABLED) {
- if (!(all_disabled &&
- ipalloc_state->no_ip_host_on_all_disabled == 0)) {
-
- bitmap_set(ipalloc_state->noiphost, i);
- }
+ bitmap_set(ipalloc_state->noiphost, i);
}
}
}
const char *t;
struct ctdb_node_map *nodemap;
uint32_t noiptakeover;
- uint32_t noiphostonalldisabled;
ctdb_sock_addr sa_zero = { .ip = { 0 } };
enum ipalloc_algorithm algorithm;
noiptakeover = 0;
}
- t = getenv("CTDB_SET_NoIPHostOnAllDisabled");
- if (t != NULL) {
- noiphostonalldisabled = (uint32_t) strtol(t, NULL, 0);
- } else {
- noiphostonalldisabled = 1;
- }
-
*ipalloc_state = ipalloc_state_init(mem_ctx, nodemap->num,
algorithm,
(noiptakeover != 0),
false,
- (noiphostonalldisabled != 0),
NULL);
assert(*ipalloc_state != NULL);