From cf54177475567f88890722292cdad38f005f748f Mon Sep 17 00:00:00 2001 From: Patrick Caulfield Date: Thu, 30 Sep 2004 14:18:29 +0000 Subject: [PATCH] Make clvmd cope with large gaps in nodeIDs --- WHATS_NEW | 3 +++ daemons/clvmd/clvmd-cman.c | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 75f982441..64653698d 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,8 @@ Version 2.00.26 - ===================================== + Make clvmd fork later so it can return more error codes. + Make clvmd cope with large gaps in node numbers IDs. + Version 2.00.25 - 29th September 2004 ===================================== diff --git a/daemons/clvmd/clvmd-cman.c b/daemons/clvmd/clvmd-cman.c index a21515e63..78b3eec46 100644 --- a/daemons/clvmd/clvmd-cman.c +++ b/daemons/clvmd/clvmd-cman.c @@ -257,17 +257,18 @@ void add_up_node(char *csid) int nodeid = nodeid_from_csid(csid); if (nodeid >= max_updown_nodes) { - int *new_updown = realloc(node_updown, max_updown_nodes + 10); + int new_size = nodeid + 10; + int *new_updown = realloc(node_updown, new_size); if (new_updown) { node_updown = new_updown; - max_updown_nodes += 10; + max_updown_nodes = new_size; DEBUGLOG("realloced more space for nodes. now %d\n", max_updown_nodes); } else { log_error - ("Realloc failed. Node status for clvmd will be wrong\n"); - return; + ("Realloc failed. Node status for clvmd will be wrong. quitting\n"); + exit(999); } } node_updown[nodeid] = 1;