From fed251726facf30225a131d43658975d5f4befb5 Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Mon, 12 Sep 2016 15:51:58 +1000 Subject: [PATCH] ctdb-ipalloc: Optimise check to see if IPs can be hosted Add an early return if there are no known IP addresses. Also add an extra comment for clarification. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12254 Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs --- ctdb/server/ipalloc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ctdb/server/ipalloc.c b/ctdb/server/ipalloc.c index ccd12e77b28..ffec5e93ce0 100644 --- a/ctdb/server/ipalloc.c +++ b/ctdb/server/ipalloc.c @@ -245,12 +245,14 @@ bool ipalloc_set_public_ips(struct ipalloc_state *ipalloc_state, bool ipalloc_can_host_ips(struct ipalloc_state *ipalloc_state) { int i; + bool have_ips = false; for (i=0; i < ipalloc_state->num; i++) { struct ctdb_public_ip_list *ips = ipalloc_state->known_public_ips; if (ips[i].num != 0) { int j; + have_ips = true; /* Succeed if an address is hosted on node i */ for (j=0; j < ips[i].num; j++) { if (ips[i].ip[j].pnn == i) { @@ -260,6 +262,14 @@ bool ipalloc_can_host_ips(struct ipalloc_state *ipalloc_state) } } + if (! have_ips) { + return false; + } + + /* At this point there are known addresses but none are + * hosted. Need to check if cluster can now host some + * addresses. + */ for (i=0; i < ipalloc_state->num; i++) { if (ipalloc_state->available_public_ips[i].num != 0) { return true; -- 2.11.4.GIT