From mboxrd@z Thu Jan 1 00:00:00 1970 From: lhh@sourceware.org Date: 26 Jan 2007 21:38:04 -0000 Subject: [Cluster-devel] cluster/rgmanager/src/utils clustat.c Message-ID: <20070126213804.25817.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Changes by: lhh at sourceware.org 2007-01-26 21:37:59 Modified files: rgmanager/src/utils: clustat.c Log message: merge fixes from RHEL5 branch Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.28&r2=1.29 --- cluster/rgmanager/src/utils/clustat.c 2007/01/17 16:21:25 1.28 +++ cluster/rgmanager/src/utils/clustat.c 2007/01/26 21:37:57 1.29 @@ -20,6 +20,7 @@ #define FLAG_LOCAL 0x2 #define FLAG_RGMGR 0x4 #define FLAG_NOCFG 0x8 /* Shouldn't happen */ +#define FLAG_QDISK 0x10 #define RG_VERBOSE 0x1 @@ -342,8 +343,8 @@ cluster_member_list_t * add_missing(cluster_member_list_t *all, cluster_member_list_t *these) { - int x, y; - cman_node_t *m, *new; + int x, y, addflag; + cman_node_t *m, *nn; if (!these) return all; @@ -356,12 +357,8 @@ these->cml_members[x].cn_name)) m = &all->cml_members[y]; } - + if (!m) { - printf("%s not found\n", these->cml_members[x].cn_name); - /* WTF? It's not in our config */ - printf("realloc %d\n", (int)((all->cml_count+1) * - sizeof(cman_node_t))); all->cml_members = realloc(all->cml_members, (all->cml_count+1) * sizeof(cman_node_t)); @@ -370,15 +367,21 @@ exit(1); } - new = &all->cml_members[all->cml_count]; + nn = &all->cml_members[all->cml_count]; - memcpy(new, &these->cml_members[x], + memcpy(nn, &these->cml_members[x], sizeof(cman_node_t)); + + if (nn->cn_nodeid == 0) { /* quorum disk? */ + addflag = FLAG_QDISK; + } else { + addflag = FLAG_NOCFG; + } - if (new->cn_member) { - new->cn_member = FLAG_UP | FLAG_NOCFG; + if (nn->cn_member) { + nn->cn_member = FLAG_UP | addflag; } else { - new->cn_member = FLAG_NOCFG; + nn->cn_member = addflag; } ++all->cml_count; @@ -612,9 +615,12 @@ if (node->cn_member & FLAG_NOCFG) printf(", Estranged"); - + if (node->cn_member & FLAG_RGMGR) printf(", rgmanager"); + + if (node->cn_member & FLAG_QDISK) + printf(", Quorum Disk"); printf("\n"); @@ -626,12 +632,13 @@ xml_member_state(cman_node_t *node) { printf(" \n", + "estranged=\"%d\" rgmanager=\"%d\" qdisk=\"%d\" nodeid=\"0x%08x\"/>\n", node->cn_name, !!(node->cn_member & FLAG_UP), !!(node->cn_member & FLAG_LOCAL), !!(node->cn_member & FLAG_NOCFG), !!(node->cn_member & FLAG_RGMGR), + !!(node->cn_member & FLAG_QDISK), (uint32_t)((node->cn_nodeid )&0xffffffff)); }