* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2006-12-13 17:12 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2006-12-13 17:12 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2006-12-13 17:12:03
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix segfault in clustat if node is not a cluster member
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.25&r2=1.26
--- cluster/rgmanager/src/utils/clustat.c 2006/10/12 22:07:57 1.25
+++ cluster/rgmanager/src/utils/clustat.c 2006/12/13 17:12:02 1.26
@@ -345,6 +345,9 @@
int x, y;
cman_node_t *m, *new;
+ if (!these)
+ return all;
+
for (x=0; x<these->cml_count; x++) {
m = NULL;
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-12-10 18:24 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-12-10 18:24 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: lhh at sourceware.org 2007-12-10 18:24:13
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix type-pun warnings in clustat.c on i386
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.25.2.8&r2=1.25.2.9
--- cluster/rgmanager/src/utils/clustat.c 2007/12/06 17:52:32 1.25.2.8
+++ cluster/rgmanager/src/utils/clustat.c 2007/12/10 18:24:12 1.25.2.9
@@ -492,6 +492,8 @@
void
_txt_rg_state_v(rg_state_t *rs, cluster_member_list_t *members, int flags)
{
+ time_t t;
+
printf("Service Name : %s\n", rs->rs_name);
printf(" Current State : %s (%d)\n",
rg_state_str(rs->rs_state), rs->rs_state);
@@ -499,8 +501,9 @@
my_memb_id_to_name(members, rs->rs_owner));
printf(" Last Owner : %s\n",
my_memb_id_to_name(members, rs->rs_last_owner));
- printf(" Last Transition : %s\n",
- ctime((time_t *)(&rs->rs_transition)));
+
+ t = (time_t)(rs->rs_transition);
+ printf(" Last Transition : %s\n", ctime(&t));
}
@@ -520,9 +523,11 @@
{
char time_str[32];
int x;
+ time_t t;
/* Chop off newlines */
- ctime_r((time_t *)&rs->rs_transition, time_str);
+ t = (time_t)(rs->rs_transition);
+ ctime_r(&t, time_str);
for (x = 0; time_str[x]; x++) {
if (time_str[x] < 32) {
time_str[x] = 0;
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-12-10 18:11 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-12-10 18:11 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2007-12-10 18:11:57
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix type-punned errors on i386
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.37&r2=1.38
--- cluster/rgmanager/src/utils/clustat.c 2007/12/06 17:47:06 1.37
+++ cluster/rgmanager/src/utils/clustat.c 2007/12/10 18:11:56 1.38
@@ -492,6 +492,8 @@
void
_txt_rg_state_v(rg_state_t *rs, cluster_member_list_t *members, int flags)
{
+ time_t t;
+
printf("Service Name : %s\n", rs->rs_name);
printf(" Current State : %s (%d)\n",
rg_state_str(rs->rs_state), rs->rs_state);
@@ -499,8 +501,9 @@
my_memb_id_to_name(members, rs->rs_owner));
printf(" Last Owner : %s\n",
my_memb_id_to_name(members, rs->rs_last_owner));
- printf(" Last Transition : %s\n",
- ctime((time_t *)(&rs->rs_transition)));
+
+ t = (time_t)(rs->rs_transition);
+ printf(" Last Transition : %s\n", ctime(&t));
}
@@ -520,9 +523,11 @@
{
char time_str[32];
int x;
+ time_t t;
/* Chop off newlines */
- ctime_r((time_t *)&rs->rs_transition, time_str);
+ t = (time_t)(rs->rs_transition);
+ ctime_r(&t, time_str);
for (x = 0; time_str[x]; x++) {
if (time_str[x] < 32) {
time_str[x] = 0;
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-12-06 17:52 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-12-06 17:52 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: lhh at sourceware.org 2007-12-06 17:52:32
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix format warnings on newer GCC
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.25.2.7&r2=1.25.2.8
--- cluster/rgmanager/src/utils/clustat.c 2007/11/30 19:47:15 1.25.2.7
+++ cluster/rgmanager/src/utils/clustat.c 2007/12/06 17:52:32 1.25.2.8
@@ -451,10 +451,9 @@
void
_txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags,
- char *fmt_buf, int ns)
+ int svcsize, int nodesize, int statsize)
{
char owner[MAXHOSTNAMELEN+1];
- char owner_fmt[16];
char *name = rs->rs_name, *ptr;
int l;
@@ -469,27 +468,24 @@
}
memset(owner, 0, sizeof(owner));
- memset(owner_fmt, 0, sizeof(owner_fmt));
if (rs->rs_state == RG_STATE_STOPPED ||
rs->rs_state == RG_STATE_DISABLED ||
rs->rs_state == RG_STATE_ERROR ||
rs->rs_state == RG_STATE_FAILED) {
- snprintf(owner_fmt, sizeof(owner_fmt)-1, "(%%-.%ds)", ns-2);
- snprintf(owner, sizeof(owner)-1, owner_fmt,
+ snprintf(owner, sizeof(owner)-1, "(%-.*s)", nodesize-2,
my_memb_id_to_name(members, rs->rs_last_owner));
} else {
- snprintf(owner_fmt, sizeof(owner_fmt)-1, "%%-.%ds", ns);
- snprintf(owner, sizeof(owner)-1, owner_fmt,
+ snprintf(owner, sizeof(owner)-1, "%-.*s", nodesize,
my_memb_id_to_name(members, rs->rs_owner));
}
- printf(fmt_buf,
- name,
- owner,
- rg_state_str(rs->rs_state));
+ printf(" %-*.*s %-*.*s %-*.*s\n",
+ svcsize, svcsize, rs->rs_name,
+ nodesize, nodesize, owner,
+ statsize, statsize, rg_state_str(rs->rs_state));
}
@@ -509,12 +505,13 @@
void
-txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags, char *fmt_buf, int ns)
+txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags, int svcsize,
+ int nodesize, int statsize)
{
if (flags & RG_VERBOSE)
_txt_rg_state_v(rs, members, flags);
else
- _txt_rg_state(rs, members, flags, fmt_buf, ns);
+ _txt_rg_state(rs, members, flags, svcsize, nodesize, statsize);
}
@@ -548,27 +545,20 @@
void
-build_service_format(char *buf, int buflen, int cols, int *ns)
+build_service_field_sizes(int cols, int *svcsize, int *nodesize, int *statsize)
{
/* Based on 80 columns */
- int svcsize = 30;
- int nodesize = 30;
- int statsize = 14; /* uninitialized */
+ *svcsize = 30;
+ *nodesize = 30;
+ *statsize = 14; /* uninitialized */
int pad = 6; /* Spaces and such; newline */
- svcsize = (cols - (statsize + pad)) / 2;
- nodesize = (cols - (statsize + pad)) / 2;
- if (svcsize > MAXHOSTNAMELEN)
- svcsize = MAXHOSTNAMELEN;
- if (nodesize > MAXHOSTNAMELEN)
- nodesize = MAXHOSTNAMELEN;
-
- memset(buf, 0, buflen);
- snprintf(buf, buflen-1, " %%-%d.%ds %%-%d.%ds %%-%d.%ds\n",
- svcsize, svcsize, nodesize, nodesize, statsize,
- statsize);
-
- *ns = nodesize;
+ *svcsize = (cols - (*statsize + pad)) / 2;
+ *nodesize = (cols - (*statsize + pad)) / 2;
+ if (*svcsize > MAXHOSTNAMELEN)
+ *svcsize = MAXHOSTNAMELEN;
+ if (*nodesize > MAXHOSTNAMELEN)
+ *nodesize = MAXHOSTNAMELEN;
}
@@ -576,8 +566,7 @@
txt_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
char *svcname, int flags)
{
- int x, ret = 0, ns;
- char fmt_buf[80];
+ int x, ret = 0, svcsize, nodesize, statsize;
if (!rgl || !members)
return -1;
@@ -585,14 +574,18 @@
if (svcname)
ret = -1;
- build_service_format(fmt_buf, sizeof(fmt_buf), dimx, &ns);
+ build_service_field_sizes(dimx, &svcsize, &nodesize, &statsize);
if (!(flags & RG_VERBOSE)) {
- printf(fmt_buf,
- "Service Name", "Owner (Last)", "State");
- printf(fmt_buf,
- "------- ----", "----- ------", "-----");
+ printf(" %-*.*s %-*.*s %-*.*s\n",
+ svcsize, svcsize, "Service Name",
+ nodesize, nodesize, "Owner (Last)",
+ statsize, statsize, "State");
+ printf(" %-*.*s %-*.*s %-*.*s\n",
+ svcsize, svcsize, "------- ----",
+ nodesize, nodesize, "----- ------",
+ statsize, statsize, "-----");
} else {
printf("Service Information\n"
"------- -----------\n\n");
@@ -602,7 +595,8 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
- txt_rg_state(&rgl->rgl_states[x], members, flags, fmt_buf, ns);
+ txt_rg_state(&rgl->rgl_states[x], members, flags,
+ svcsize, nodesize, statsize);
if (svcname) {
switch (rgl->rgl_states[x].rs_state) {
case RG_STATE_STARTING:
@@ -706,25 +700,21 @@
}
void
-build_member_format(char *buf, int buflen, int cols)
+build_member_field_size(int cols, int *nodesize)
{
/* Based on 80 columns */
- int nodesize = 40;
-
- nodesize = (cols / 2);
- if (nodesize > MAXHOSTNAMELEN)
- nodesize = MAXHOSTNAMELEN;
+ *nodesize = 40;
- memset(buf, 0, buflen);
- snprintf(buf, buflen-1, " %%-%d.%ds ",
- nodesize, nodesize);
+ *nodesize = (cols / 2);
+ if (*nodesize > MAXHOSTNAMELEN)
+ *nodesize = MAXHOSTNAMELEN;
}
void
-txt_member_state(cman_node_t *node, char *fmt_buf)
+txt_member_state(cman_node_t *node, int nodesize)
{
- printf(fmt_buf, node->cn_name);
+ printf(" %-*.*s ", nodesize, nodesize, node->cn_name);
printf("%4d ", node->cn_nodeid);
if (node->cn_member & FLAG_UP)
@@ -776,25 +766,24 @@
int
txt_member_states(cluster_member_list_t *membership, char *name)
{
- char buf[80];
- int x, ret = 0;
+ int x, ret = 0, nodesize;
if (!membership) {
printf("Membership information not available\n");
return -1;
}
- build_member_format(buf, sizeof(buf), dimx);
+ build_member_field_size(dimx, &nodesize);
- printf(buf, "Member Name");
+ printf(" %-*.*s", nodesize, nodesize, "Member Name");
printf("%-4.4s %s\n", "ID", "Status");
- printf(buf, "------ ----");
+ printf(" %-*.*s", nodesize, nodesize, "------ ----");
printf("%-4.4s %s\n", "----", "------");
for (x = 0; x < membership->cml_count; x++) {
if (name && strcmp(membership->cml_members[x].cn_name, name))
continue;
- txt_member_state(&membership->cml_members[x], buf);
+ txt_member_state(&membership->cml_members[x], nodesize);
ret = !(membership->cml_members[x].cn_member & FLAG_UP);
}
@@ -1072,8 +1061,12 @@
ret = !(cman_is_quorate(ch));
goto cleanup;
case VERSION_ONLY:
+#ifdef RELEASE_VERSION
printf("%s version %s\n", basename(argv[0]),
- PACKAGE_VERSION);
+ RELEASE_VERSION);
+#else
+ printf("%s version DEVEL\n", basename(argv[0]));
+#endif
if (!ch)
break;
goto cleanup;
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-12-06 17:47 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-12-06 17:47 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2007-12-06 17:47:06
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix format warnings on newer GCC
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.36&r2=1.37
--- cluster/rgmanager/src/utils/clustat.c 2007/11/30 20:06:55 1.36
+++ cluster/rgmanager/src/utils/clustat.c 2007/12/06 17:47:06 1.37
@@ -451,10 +451,9 @@
void
_txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags,
- char *fmt_buf, int ns)
+ int svcsize, int nodesize, int statsize)
{
char owner[MAXHOSTNAMELEN+1];
- char owner_fmt[16];
char *name = rs->rs_name, *ptr;
int l;
@@ -469,27 +468,24 @@
}
memset(owner, 0, sizeof(owner));
- memset(owner_fmt, 0, sizeof(owner_fmt));
if (rs->rs_state == RG_STATE_STOPPED ||
rs->rs_state == RG_STATE_DISABLED ||
rs->rs_state == RG_STATE_ERROR ||
rs->rs_state == RG_STATE_FAILED) {
- snprintf(owner_fmt, sizeof(owner_fmt)-1, "(%%-.%ds)", ns-2);
- snprintf(owner, sizeof(owner)-1, owner_fmt,
+ snprintf(owner, sizeof(owner)-1, "(%-.*s)", nodesize-2,
my_memb_id_to_name(members, rs->rs_last_owner));
} else {
- snprintf(owner_fmt, sizeof(owner_fmt)-1, "%%-.%ds", ns);
- snprintf(owner, sizeof(owner)-1, owner_fmt,
+ snprintf(owner, sizeof(owner)-1, "%-.*s", nodesize,
my_memb_id_to_name(members, rs->rs_owner));
}
- printf(fmt_buf,
- name,
- owner,
- rg_state_str(rs->rs_state));
+ printf(" %-*.*s %-*.*s %-*.*s\n",
+ svcsize, svcsize, rs->rs_name,
+ nodesize, nodesize, owner,
+ statsize, statsize, rg_state_str(rs->rs_state));
}
@@ -509,12 +505,13 @@
void
-txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags, char *fmt_buf, int ns)
+txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags, int svcsize,
+ int nodesize, int statsize)
{
if (flags & RG_VERBOSE)
_txt_rg_state_v(rs, members, flags);
else
- _txt_rg_state(rs, members, flags, fmt_buf, ns);
+ _txt_rg_state(rs, members, flags, svcsize, nodesize, statsize);
}
@@ -548,27 +545,20 @@
void
-build_service_format(char *buf, int buflen, int cols, int *ns)
+build_service_field_sizes(int cols, int *svcsize, int *nodesize, int *statsize)
{
/* Based on 80 columns */
- int svcsize = 30;
- int nodesize = 30;
- int statsize = 14; /* uninitialized */
+ *svcsize = 30;
+ *nodesize = 30;
+ *statsize = 14; /* uninitialized */
int pad = 6; /* Spaces and such; newline */
- svcsize = (cols - (statsize + pad)) / 2;
- nodesize = (cols - (statsize + pad)) / 2;
- if (svcsize > MAXHOSTNAMELEN)
- svcsize = MAXHOSTNAMELEN;
- if (nodesize > MAXHOSTNAMELEN)
- nodesize = MAXHOSTNAMELEN;
-
- memset(buf, 0, buflen);
- snprintf(buf, buflen-1, " %%-%d.%ds %%-%d.%ds %%-%d.%ds\n",
- svcsize, svcsize, nodesize, nodesize, statsize,
- statsize);
-
- *ns = nodesize;
+ *svcsize = (cols - (*statsize + pad)) / 2;
+ *nodesize = (cols - (*statsize + pad)) / 2;
+ if (*svcsize > MAXHOSTNAMELEN)
+ *svcsize = MAXHOSTNAMELEN;
+ if (*nodesize > MAXHOSTNAMELEN)
+ *nodesize = MAXHOSTNAMELEN;
}
@@ -576,8 +566,7 @@
txt_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
char *svcname, int flags)
{
- int x, ret = 0, ns;
- char fmt_buf[80];
+ int x, ret = 0, svcsize, nodesize, statsize;
if (!rgl || !members)
return -1;
@@ -585,14 +574,18 @@
if (svcname)
ret = -1;
- build_service_format(fmt_buf, sizeof(fmt_buf), dimx, &ns);
+ build_service_field_sizes(dimx, &svcsize, &nodesize, &statsize);
if (!(flags & RG_VERBOSE)) {
- printf(fmt_buf,
- "Service Name", "Owner (Last)", "State");
- printf(fmt_buf,
- "------- ----", "----- ------", "-----");
+ printf(" %-*.*s %-*.*s %-*.*s\n",
+ svcsize, svcsize, "Service Name",
+ nodesize, nodesize, "Owner (Last)",
+ statsize, statsize, "State");
+ printf(" %-*.*s %-*.*s %-*.*s\n",
+ svcsize, svcsize, "------- ----",
+ nodesize, nodesize, "----- ------",
+ statsize, statsize, "-----");
} else {
printf("Service Information\n"
"------- -----------\n\n");
@@ -602,7 +595,8 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
- txt_rg_state(&rgl->rgl_states[x], members, flags, fmt_buf, ns);
+ txt_rg_state(&rgl->rgl_states[x], members, flags,
+ svcsize, nodesize, statsize);
if (svcname) {
switch (rgl->rgl_states[x].rs_state) {
case RG_STATE_STARTING:
@@ -706,25 +700,21 @@
}
void
-build_member_format(char *buf, int buflen, int cols)
+build_member_field_size(int cols, int *nodesize)
{
/* Based on 80 columns */
- int nodesize = 40;
-
- nodesize = (cols / 2);
- if (nodesize > MAXHOSTNAMELEN)
- nodesize = MAXHOSTNAMELEN;
+ *nodesize = 40;
- memset(buf, 0, buflen);
- snprintf(buf, buflen-1, " %%-%d.%ds ",
- nodesize, nodesize);
+ *nodesize = (cols / 2);
+ if (*nodesize > MAXHOSTNAMELEN)
+ *nodesize = MAXHOSTNAMELEN;
}
void
-txt_member_state(cman_node_t *node, char *fmt_buf)
+txt_member_state(cman_node_t *node, int nodesize)
{
- printf(fmt_buf, node->cn_name);
+ printf(" %-*.*s ", nodesize, nodesize, node->cn_name);
printf("%4d ", node->cn_nodeid);
if (node->cn_member & FLAG_UP)
@@ -776,25 +766,24 @@
int
txt_member_states(cluster_member_list_t *membership, char *name)
{
- char buf[80];
- int x, ret = 0;
+ int x, ret = 0, nodesize;
if (!membership) {
printf("Membership information not available\n");
return -1;
}
- build_member_format(buf, sizeof(buf), dimx);
+ build_member_field_size(dimx, &nodesize);
- printf(buf, "Member Name");
+ printf(" %-*.*s", nodesize, nodesize, "Member Name");
printf("%-4.4s %s\n", "ID", "Status");
- printf(buf, "------ ----");
+ printf(" %-*.*s", nodesize, nodesize, "------ ----");
printf("%-4.4s %s\n", "----", "------");
for (x = 0; x < membership->cml_count; x++) {
if (name && strcmp(membership->cml_members[x].cn_name, name))
continue;
- txt_member_state(&membership->cml_members[x], buf);
+ txt_member_state(&membership->cml_members[x], nodesize);
ret = !(membership->cml_members[x].cn_member & FLAG_UP);
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-11-30 19:47 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-11-30 19:47 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: lhh at sourceware.org 2007-11-30 19:47:15
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Make clustat terminal-width dependent, but don't break scripts.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.25.2.6&r2=1.25.2.7
--- cluster/rgmanager/src/utils/clustat.c 2007/08/15 18:41:12 1.25.2.6
+++ cluster/rgmanager/src/utils/clustat.c 2007/11/30 19:47:15 1.25.2.7
@@ -21,6 +21,7 @@
#define FLAG_RGMGR 0x4
#define FLAG_NOCFG 0x8 /* Shouldn't happen */
#define FLAG_QDISK 0x10
+#define FLAG_RGMAST 0x20 /* for RIND */
#define RG_VERBOSE 0x1
@@ -30,6 +31,8 @@
int running = 1;
+int dimx = 80, dimy = 24, stdout_is_tty = 0;
+int rgmanager_master_present = 0;
void
term_handler(int sig)
@@ -44,6 +47,28 @@
} rg_state_list_t;
+int
+rg_name_sort(const void *left, const void *right)
+{
+ return strcmp(((rg_state_t *)left)->rs_name,
+ ((rg_state_t *)right)->rs_name);
+}
+
+
+int
+member_id_sort(const void *left, const void *right)
+{
+ cman_node_t *l = (cman_node_t *)left;
+ cman_node_t *r = (cman_node_t *)right;
+
+ if (l->cn_nodeid < r->cn_nodeid)
+ return -1;
+ if (l->cn_nodeid > r->cn_nodeid)
+ return 1;
+ return 0;
+}
+
+
void
flag_rgmanager_nodes(cluster_member_list_t *cml)
{
@@ -55,7 +80,7 @@
struct timeval tv;
if (msg_open(MSG_SOCKET, 0, 0, &ctx, 10) < 0) {
- perror("msg_open");
+ //perror("msg_open");
return;
}
@@ -121,6 +146,10 @@
if (cml->cml_members[n].cn_nodeid != msgp->gh_arg1)
continue;
cml->cml_members[n].cn_member |= FLAG_RGMGR;
+ if (msgp->gh_arg2) {
+ rgmanager_master_present = 1;
+ cml->cml_members[n].cn_member |= FLAG_RGMAST;
+ }
}
free(msgp);
@@ -147,7 +176,7 @@
struct timeval tv;
if (msg_open(MSG_SOCKET, 0, 0, &ctx, 10) < 0) {
- perror("msg_open");
+ //perror("msg_open");
return NULL;
}
@@ -248,6 +277,9 @@
return NULL;
}
+ qsort(rsl->rgl_states, rsl->rgl_count, sizeof(rg_state_t),
+ rg_name_sort);
+
return rsl;
}
@@ -270,9 +302,11 @@
sleep(1);
x = 0;
+ memset(buf, 0, sizeof(buf));
+
while (++x) {
name = NULL;
- snprintf(buf, sizeof(buf),
+ snprintf(buf, sizeof(buf)-1,
"/cluster/clusternodes/clusternode[%d]/@name", x);
if (ccs_get(desc, buf, &name) != 0)
@@ -307,7 +341,7 @@
free(name);
/* Add node ID */
- snprintf(buf, sizeof(buf),
+ snprintf(buf, sizeof(buf)-1,
"/cluster/clusternodes/clusternode[%d]/@nodeid", x);
if (ccs_get(desc, buf, &name) == 0) {
nodes[x-1].cn_nodeid = atoi(name);
@@ -320,6 +354,9 @@
ccs_disconnect(desc);
ret->cml_members = nodes;
+ qsort(ret->cml_members, ret->cml_count, sizeof(cman_node_t),
+ member_id_sort);
+
return ret;
}
@@ -413,25 +450,44 @@
void
-_txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags)
+_txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags,
+ char *fmt_buf, int ns)
{
- char owner[31];
+ char owner[MAXHOSTNAMELEN+1];
+ char owner_fmt[16];
+ char *name = rs->rs_name, *ptr;
+ int l;
+
+ if (stdout_is_tty) {
+ ptr = strchr(rs->rs_name, ':');
+ if (ptr) {
+ l = (int)(ptr - rs->rs_name);
+ if ((l == 7) && /* strlen("service") == 7 */
+ (strncmp(rs->rs_name, "service", l) == 0))
+ name = ptr+1;
+ }
+ }
+ memset(owner, 0, sizeof(owner));
+ memset(owner_fmt, 0, sizeof(owner_fmt));
if (rs->rs_state == RG_STATE_STOPPED ||
rs->rs_state == RG_STATE_DISABLED ||
rs->rs_state == RG_STATE_ERROR ||
rs->rs_state == RG_STATE_FAILED) {
- snprintf(owner, sizeof(owner), "(%-.28s)",
+ snprintf(owner_fmt, sizeof(owner_fmt)-1, "(%%-.%ds)", ns-2);
+ snprintf(owner, sizeof(owner)-1, owner_fmt,
my_memb_id_to_name(members, rs->rs_last_owner));
} else {
- snprintf(owner, sizeof(owner), "%-.30s",
+ snprintf(owner_fmt, sizeof(owner_fmt)-1, "%%-.%ds", ns);
+ snprintf(owner, sizeof(owner)-1, owner_fmt,
my_memb_id_to_name(members, rs->rs_owner));
}
- printf(" %-20.20s %-30.30s %-16.16s\n",
- rs->rs_name,
+
+ printf(fmt_buf,
+ name,
owner,
rg_state_str(rs->rs_state));
}
@@ -453,12 +509,12 @@
void
-txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags)
+txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags, char *fmt_buf, int ns)
{
if (flags & RG_VERBOSE)
_txt_rg_state_v(rs, members, flags);
else
- _txt_rg_state(rs, members, flags);
+ _txt_rg_state(rs, members, flags, fmt_buf, ns);
}
@@ -491,11 +547,37 @@
}
+void
+build_service_format(char *buf, int buflen, int cols, int *ns)
+{
+ /* Based on 80 columns */
+ int svcsize = 30;
+ int nodesize = 30;
+ int statsize = 14; /* uninitialized */
+ int pad = 6; /* Spaces and such; newline */
+
+ svcsize = (cols - (statsize + pad)) / 2;
+ nodesize = (cols - (statsize + pad)) / 2;
+ if (svcsize > MAXHOSTNAMELEN)
+ svcsize = MAXHOSTNAMELEN;
+ if (nodesize > MAXHOSTNAMELEN)
+ nodesize = MAXHOSTNAMELEN;
+
+ memset(buf, 0, buflen);
+ snprintf(buf, buflen-1, " %%-%d.%ds %%-%d.%ds %%-%d.%ds\n",
+ svcsize, svcsize, nodesize, nodesize, statsize,
+ statsize);
+
+ *ns = nodesize;
+}
+
+
int
txt_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
char *svcname, int flags)
{
- int x, ret = 0;
+ int x, ret = 0, ns;
+ char fmt_buf[80];
if (!rgl || !members)
return -1;
@@ -503,10 +585,13 @@
if (svcname)
ret = -1;
+ build_service_format(fmt_buf, sizeof(fmt_buf), dimx, &ns);
+
if (!(flags & RG_VERBOSE)) {
- printf(" %-20.20s %-30.30s %-14.14s\n",
+
+ printf(fmt_buf,
"Service Name", "Owner (Last)", "State");
- printf(" %-20.20s %-30.30s %-14.14s\n",
+ printf(fmt_buf,
"------- ----", "----- ------", "-----");
} else {
printf("Service Information\n"
@@ -517,7 +602,7 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
- txt_rg_state(&rgl->rgl_states[x], members, flags);
+ txt_rg_state(&rgl->rgl_states[x], members, flags, fmt_buf, ns);
if (svcname) {
switch (rgl->rgl_states[x].rs_state) {
case RG_STATE_STARTING:
@@ -530,7 +615,7 @@
}
}
}
-
+
return ret;
}
@@ -583,6 +668,24 @@
void
+txt_cluster_info(cman_cluster_t *ci)
+{
+ time_t now = time(NULL);
+
+ printf("Cluster Status for %s @ %s",
+ ci->ci_name, ctime(&now));
+}
+
+
+void
+xml_cluster_info(cman_cluster_t *ci)
+{
+ printf(" <cluster name=\"%s\" id=\"%d\" generation=\"%d\"/>\n",
+ ci->ci_name, ci->ci_number, ci->ci_generation);
+}
+
+
+void
xml_quorum_state(int qs)
{
/* XXX output groupmember attr (carry over from RHCS4) */
@@ -598,15 +701,31 @@
} else {
printf(" groupmember=\"0\"");
}
+
printf("/>\n");
}
+void
+build_member_format(char *buf, int buflen, int cols)
+{
+ /* Based on 80 columns */
+ int nodesize = 40;
+
+ nodesize = (cols / 2);
+ if (nodesize > MAXHOSTNAMELEN)
+ nodesize = MAXHOSTNAMELEN;
+
+ memset(buf, 0, buflen);
+ snprintf(buf, buflen-1, " %%-%d.%ds ",
+ nodesize, nodesize);
+}
+
void
-txt_member_state(cman_node_t *node)
+txt_member_state(cman_node_t *node, char *fmt_buf)
{
- printf(" %-34.34s %4d ", node->cn_name,
- node->cn_nodeid);
+ printf(fmt_buf, node->cn_name);
+ printf("%4d ", node->cn_nodeid);
if (node->cn_member & FLAG_UP)
printf("Online");
@@ -619,15 +738,21 @@
if (node->cn_member & FLAG_NOCFG)
printf(", Estranged");
- if (node->cn_member & FLAG_RGMGR)
- printf(", rgmanager");
+ if (node->cn_member & FLAG_RGMGR) {
+ if (rgmanager_master_present) {
+ if (node->cn_member & FLAG_RGMAST)
+ printf(", RG-Master");
+ else
+ printf(", RG-Worker");
+ } else {
+ printf(", rgmanager");
+ }
+ }
if (node->cn_member & FLAG_QDISK)
printf(", Quorum Disk");
printf("\n");
-
-
}
@@ -635,12 +760,14 @@
xml_member_state(cman_node_t *node)
{
printf(" <node name=\"%s\" state=\"%d\" local=\"%d\" "
- "estranged=\"%d\" rgmanager=\"%d\" qdisk=\"%d\" nodeid=\"0x%08x\"/>\n",
+ "estranged=\"%d\" rgmanager=\"%d\" rgmanager_master=\"%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_RGMAST),
!!(node->cn_member & FLAG_QDISK),
(uint32_t)((node->cn_nodeid )&0xffffffff));
}
@@ -649,6 +776,7 @@
int
txt_member_states(cluster_member_list_t *membership, char *name)
{
+ char buf[80];
int x, ret = 0;
if (!membership) {
@@ -656,13 +784,17 @@
return -1;
}
- printf(" %-34.34s %-4.4s %s\n", "Member Name", "ID", "Status");
- printf(" %-34.34s %-4.4s %s\n", "------ ----", "----", "------");
+ build_member_format(buf, sizeof(buf), dimx);
+
+ printf(buf, "Member Name");
+ printf("%-4.4s %s\n", "ID", "Status");
+ printf(buf, "------ ----");
+ printf("%-4.4s %s\n", "----", "------");
for (x = 0; x < membership->cml_count; x++) {
if (name && strcmp(membership->cml_members[x].cn_name, name))
continue;
- txt_member_state(&membership->cml_members[x]);
+ txt_member_state(&membership->cml_members[x], buf);
ret = !(membership->cml_members[x].cn_member & FLAG_UP);
}
@@ -696,13 +828,15 @@
int
-txt_cluster_status(int qs, cluster_member_list_t *membership,
+txt_cluster_status(cman_cluster_t *ci,
+ int qs, cluster_member_list_t *membership,
rg_state_list_t *rgs, char *name, char *svcname,
int flags)
{
int ret;
if (!svcname && !name) {
+ txt_cluster_info(ci);
txt_quorum_state(qs);
if (!membership) {
/* XXX Check for rgmanager?! */
@@ -717,12 +851,14 @@
return ret;
if (!name || (name && svcname))
ret = txt_rg_states(rgs, membership, svcname, flags);
+
return ret;
}
int
-xml_cluster_status(int qs, cluster_member_list_t *membership,
+xml_cluster_status(cman_cluster_t *ci, int qs,
+ cluster_member_list_t *membership,
rg_state_list_t *rgs, char *name, char *svcname,
int flags)
{
@@ -747,6 +883,8 @@
}
if (!svcname && !name)
+ xml_cluster_info(ci);
+ if (!svcname && !name)
xml_quorum_state(qs);
if (!svcname || (name && svcname))
ret1 = xml_member_states(membership, name);
@@ -841,7 +979,9 @@
int local_node_id;
int fast = 0;
int runtype = 0;
+ time_t now;
cman_handle_t ch = NULL;
+ cman_cluster_t ci;
int refresh_sec = 0, errors = 0;
int opt, xml = 0, flags = 0;
@@ -879,8 +1019,9 @@
case 's':
rg_name = optarg;
if (!strchr(rg_name,':')) {
+ memset(real_rg_name, 0, sizeof(real_rg_name));
snprintf(real_rg_name,
- sizeof(real_rg_name),
+ sizeof(real_rg_name)-1,
"service:%s", rg_name);
rg_name = real_rg_name;
}
@@ -920,7 +1061,7 @@
/* Connect & grab all our info */
ch = cman_init(NULL);
if (!ch) {
- printf("CMAN is not running.\n");
+ perror("Could not connect to CMAN");
return 1;
}
@@ -953,6 +1094,16 @@
signal(SIGINT, term_handler);
signal(SIGTERM, term_handler);
+ if (isatty(STDOUT_FILENO)) {
+ stdout_is_tty = 1;
+ setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
+ dimx = tigetnum("cols");
+ dimy = tigetnum("lines");
+ }
+
+ memset(&ci, 0, sizeof(ci));
+ cman_get_cluster(ch, &ci);
+
while (1) {
qs = cman_is_quorate(ch);
membership = build_member_list(ch, &local_node_id);
@@ -964,16 +1115,16 @@
}
if (refresh_sec) {
- setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
tputs(clear_screen, lines > 0 ? lines : 1, putchar);
+ now = time(NULL);
}
if (xml)
- ret = xml_cluster_status(qs, membership, rgs,
+ ret = xml_cluster_status(&ci, qs, membership, rgs,
member_name, rg_name,
flags);
else
- ret = txt_cluster_status(qs, membership, rgs,
+ ret = txt_cluster_status(&ci, qs, membership, rgs,
member_name, rg_name,
flags);
@@ -990,5 +1141,6 @@
cleanup:
cman_finish(ch);
+
return ret;
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-09-19 10:56 pcaulfield
0 siblings, 0 replies; 23+ messages in thread
From: pcaulfield @ 2007-09-19 10:56 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: pcaulfield at sourceware.org 2007-09-19 10:56:08
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix type-punned pointer warnings
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.34&r2=1.35
--- cluster/rgmanager/src/utils/clustat.c 2007/08/22 08:58:47 1.34
+++ cluster/rgmanager/src/utils/clustat.c 2007/09/19 10:56:08 1.35
@@ -446,6 +446,7 @@
_txt_rg_state_v(rg_state_t *rs, cluster_member_list_t *members, int flags)
{
char flags_string[255] = "";
+ time_t transtime = rs->rs_transition;
rg_flags_str(flags_string, sizeof(flags_string), rs->rs_flags, ", ");
@@ -463,7 +464,7 @@
printf(" Last Owner : %s\n",
my_memb_id_to_name(members, rs->rs_last_owner));
printf(" Last Transition : %s\n",
- ctime((time_t *)(&rs->rs_transition)));
+ ctime(&transtime));
}
@@ -482,10 +483,11 @@
{
char time_str[32];
char flags_string[255] = "";
+ time_t transtime = rs->rs_transition;
int x;
/* Chop off newlines */
- ctime_r((time_t *)&rs->rs_transition, time_str);
+ ctime_r((time_t *)&transtime, time_str);
for (x = 0; time_str[x]; x++) {
if (time_str[x] < 32) {
time_str[x] = 0;
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-02-06 20:22 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-02-06 20:22 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: STABLE
Changes by: lhh at sourceware.org 2007-02-06 20:22:46
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Don't query rgmanager if the user only wants a node state; also fix 227507
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=STABLE&r1=1.5.2.3.6.12&r2=1.5.2.3.6.13
--- cluster/rgmanager/src/utils/clustat.c 2007/01/29 19:40:38 1.5.2.3.6.12
+++ cluster/rgmanager/src/utils/clustat.c 2007/02/06 20:22:46 1.5.2.3.6.13
@@ -398,7 +398,7 @@
int
xml_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
- char *svcname)
+ char *svcname, int flags)
{
int x;
int ret = 0;
@@ -412,6 +412,7 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
+ xml_rg_state(&rgl->rgl_states[x], members, flags);
if (svcname) {
switch (rgl->rgl_states[x].rs_state) {
case RG_STATE_STARTING:
@@ -592,7 +593,7 @@
if (rgs &&
(!name || (name && svcname)))
- ret2 = xml_rg_states(rgs, membership, svcname);
+ ret2 = xml_rg_states(rgs, membership, svcname, flags);
printf("</clustat>\n");
if (name && ret1)
@@ -791,7 +792,8 @@
qs = clu_quorum_status(RG_SERVICE_GROUP);
membership = build_member_list(&local_node_id);
- rgs = rg_state_list(local_node_id, fast);
+ if (!member_name)
+ rgs = rg_state_list(local_node_id, fast);
if (refresh_sec) {
setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-02-06 20:21 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-02-06 20:21 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2007-02-06 20:21:17
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Don't query rgmanager if the user only wants a node state
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.30&r2=1.31
--- cluster/rgmanager/src/utils/clustat.c 2007/01/29 19:42:18 1.30
+++ cluster/rgmanager/src/utils/clustat.c 2007/02/06 20:21:17 1.31
@@ -957,7 +957,8 @@
qs = cman_is_quorate(ch);
membership = build_member_list(ch, &local_node_id);
- rgs = rg_state_list(local_node_id, fast);
+ if (!member_name)
+ rgs = rg_state_list(local_node_id, fast);
if (rgs) {
flag_rgmanager_nodes(membership);
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-02-06 20:20 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-02-06 20:20 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: lhh at sourceware.org 2007-02-06 20:20:23
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Don't query rgmanager if the user only wants a node state
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.25.2.4&r2=1.25.2.5
--- cluster/rgmanager/src/utils/clustat.c 2007/01/29 19:41:25 1.25.2.4
+++ cluster/rgmanager/src/utils/clustat.c 2007/02/06 20:20:23 1.25.2.5
@@ -957,7 +957,8 @@
qs = cman_is_quorate(ch);
membership = build_member_list(ch, &local_node_id);
- rgs = rg_state_list(local_node_id, fast);
+ if (!member_name)
+ rgs = rg_state_list(local_node_id, fast);
if (rgs) {
flag_rgmanager_nodes(membership);
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-02-06 20:18 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-02-06 20:18 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL4
Changes by: lhh at sourceware.org 2007-02-06 20:18:48
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Don't query rgmanager if the user only wants a node state
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.18&r2=1.5.2.19
--- cluster/rgmanager/src/utils/clustat.c 2007/02/06 19:54:51 1.5.2.18
+++ cluster/rgmanager/src/utils/clustat.c 2007/02/06 20:18:48 1.5.2.19
@@ -792,7 +792,8 @@
qs = clu_quorum_status(RG_SERVICE_GROUP);
membership = build_member_list(&local_node_id);
- rgs = rg_state_list(local_node_id, fast);
+ if (!member_name)
+ rgs = rg_state_list(local_node_id, fast);
if (refresh_sec) {
setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-02-06 19:54 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-02-06 19:54 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL4
Changes by: lhh at sourceware.org 2007-02-06 19:54:53
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix #227507 - missing output of service info in clustat -x
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.17&r2=1.5.2.18
--- cluster/rgmanager/src/utils/clustat.c 2007/01/29 19:40:11 1.5.2.17
+++ cluster/rgmanager/src/utils/clustat.c 2007/02/06 19:54:51 1.5.2.18
@@ -398,7 +398,7 @@
int
xml_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
- char *svcname)
+ char *svcname, int flags)
{
int x;
int ret = 0;
@@ -412,6 +412,7 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
+ xml_rg_state(&rgl->rgl_states[x], members, flags);
if (svcname) {
switch (rgl->rgl_states[x].rs_state) {
case RG_STATE_STARTING:
@@ -592,7 +593,7 @@
if (rgs &&
(!name || (name && svcname)))
- ret2 = xml_rg_states(rgs, membership, svcname);
+ ret2 = xml_rg_states(rgs, membership, svcname, flags);
printf("</clustat>\n");
if (name && ret1)
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-01-29 19:42 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-01-29 19:42 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2007-01-29 19:42:18
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Add error reporting if msg_open fails; patch from Josef Whiter
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.29&r2=1.30
--- cluster/rgmanager/src/utils/clustat.c 2007/01/26 21:37:57 1.29
+++ cluster/rgmanager/src/utils/clustat.c 2007/01/29 19:42:18 1.30
@@ -54,8 +54,10 @@
struct timeval tv;
- if (msg_open(MSG_SOCKET, 0, 0, &ctx, 10) < 0)
+ if (msg_open(MSG_SOCKET, 0, 0, &ctx, 10) < 0) {
+ perror("msg_open");
return;
+ }
msg_send_simple(&ctx, RG_STATUS_NODE, 0, 0);
@@ -145,6 +147,7 @@
struct timeval tv;
if (msg_open(MSG_SOCKET, 0, 0, &ctx, 10) < 0) {
+ perror("msg_open");
return NULL;
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-01-29 19:41 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-01-29 19:41 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: lhh at sourceware.org 2007-01-29 19:41:25
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Add error reporting if msg_open fails; patch from Josef Whiter
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.25.2.3&r2=1.25.2.4
--- cluster/rgmanager/src/utils/clustat.c 2007/01/26 20:41:41 1.25.2.3
+++ cluster/rgmanager/src/utils/clustat.c 2007/01/29 19:41:25 1.25.2.4
@@ -54,8 +54,10 @@
struct timeval tv;
- if (msg_open(MSG_SOCKET, 0, 0, &ctx, 10) < 0)
+ if (msg_open(MSG_SOCKET, 0, 0, &ctx, 10) < 0) {
+ perror("msg_open");
return;
+ }
msg_send_simple(&ctx, RG_STATUS_NODE, 0, 0);
@@ -145,6 +147,7 @@
struct timeval tv;
if (msg_open(MSG_SOCKET, 0, 0, &ctx, 10) < 0) {
+ perror("msg_open");
return NULL;
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-01-29 19:40 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-01-29 19:40 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: STABLE
Changes by: lhh at sourceware.org 2007-01-29 19:40:38
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Add error reporting if msg_open fails; patch from Josef Whiter
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=STABLE&r1=1.5.2.3.6.11&r2=1.5.2.3.6.12
--- cluster/rgmanager/src/utils/clustat.c 2007/01/26 21:06:01 1.5.2.3.6.11
+++ cluster/rgmanager/src/utils/clustat.c 2007/01/29 19:40:38 1.5.2.3.6.12
@@ -52,6 +52,7 @@
fd = msg_open(local_node_id, RG_PORT, RG_PURPOSE, 10);
if (fd == -1) {
+ perror("msg_open");
return NULL;
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-01-29 19:40 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-01-29 19:40 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL4
Changes by: lhh at sourceware.org 2007-01-29 19:40:11
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Add error reporting if msg_open fails; patch from Josef Whiter
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.16&r2=1.5.2.17
--- cluster/rgmanager/src/utils/clustat.c 2007/01/26 21:02:28 1.5.2.16
+++ cluster/rgmanager/src/utils/clustat.c 2007/01/29 19:40:11 1.5.2.17
@@ -52,6 +52,7 @@
fd = msg_open(local_node_id, RG_PORT, RG_PURPOSE, 10);
if (fd == -1) {
+ perror("msg_open");
return NULL;
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-01-26 21:38 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-01-26 21:38 UTC (permalink / raw)
To: cluster-devel.redhat.com
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(" <node name=\"%s\" state=\"%d\" local=\"%d\" "
- "estranged=\"%d\" rgmanager=\"%d\" nodeid=\"0x%08x\"/>\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));
}
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-01-17 16:21 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-01-17 16:21 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2007-01-17 16:21:25
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix #222961 - required for Conga to work.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.27&r2=1.28
--- cluster/rgmanager/src/utils/clustat.c 2006/12/13 18:36:09 1.27
+++ cluster/rgmanager/src/utils/clustat.c 2007/01/17 16:21:25 1.28
@@ -531,7 +531,7 @@
int
xml_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
- char *svcname)
+ char *svcname, int flags)
{
int x;
int ret = 0;
@@ -545,6 +545,7 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
+ xml_rg_state(&rgl->rgl_states[x], members, flags);
if (svcname) {
switch (rgl->rgl_states[x].rs_state) {
case RG_STATE_STARTING:
@@ -742,7 +743,7 @@
if (rgs &&
(!name || (name && svcname)))
- ret2 = xml_rg_states(rgs, membership, svcname);
+ ret2 = xml_rg_states(rgs, membership, svcname, flags);
printf("</clustat>\n");
if (name && ret1)
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-01-17 16:20 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-01-17 16:20 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: lhh at sourceware.org 2007-01-17 16:20:29
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix #222961 - required for Conga to work.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.25.2.1&r2=1.25.2.2
--- cluster/rgmanager/src/utils/clustat.c 2006/12/13 18:38:41 1.25.2.1
+++ cluster/rgmanager/src/utils/clustat.c 2007/01/17 16:20:29 1.25.2.2
@@ -531,7 +531,7 @@
int
xml_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
- char *svcname)
+ char *svcname, int flags)
{
int x;
int ret = 0;
@@ -545,6 +545,7 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
+ xml_rg_state(&rgl->rgl_states[x], members, flags);
if (svcname) {
switch (rgl->rgl_states[x].rs_state) {
case RG_STATE_STARTING:
@@ -742,7 +743,7 @@
if (rgs &&
(!name || (name && svcname)))
- ret2 = xml_rg_states(rgs, membership, svcname);
+ ret2 = xml_rg_states(rgs, membership, svcname, flags);
printf("</clustat>\n");
if (name && ret1)
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2007-01-17 16:19 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2007-01-17 16:19 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL50
Changes by: lhh at sourceware.org 2007-01-17 16:19:07
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix #222961 - required for Conga to work.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&only_with_tag=RHEL50&r1=1.25.4.1&r2=1.25.4.2
--- cluster/rgmanager/src/utils/clustat.c 2006/12/13 18:39:20 1.25.4.1
+++ cluster/rgmanager/src/utils/clustat.c 2007/01/17 16:19:07 1.25.4.2
@@ -531,7 +531,7 @@
int
xml_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
- char *svcname)
+ char *svcname, int flags)
{
int x;
int ret = 0;
@@ -545,6 +545,7 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
+ xml_rg_state(&rgl->rgl_states[x], members, flags);
if (svcname) {
switch (rgl->rgl_states[x].rs_state) {
case RG_STATE_STARTING:
@@ -742,7 +743,7 @@
if (rgs &&
(!name || (name && svcname)))
- ret2 = xml_rg_states(rgs, membership, svcname);
+ ret2 = xml_rg_states(rgs, membership, svcname, flags);
printf("</clustat>\n");
if (name && ret1)
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2006-12-13 18:36 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2006-12-13 18:36 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2006-12-13 18:36:09
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Fix #211468 - clustat always returns 0, but should give a nonzero code for non-running services.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.26&r2=1.27
--- cluster/rgmanager/src/utils/clustat.c 2006/12/13 17:12:02 1.26
+++ cluster/rgmanager/src/utils/clustat.c 2006/12/13 18:36:09 1.27
@@ -485,14 +485,17 @@
}
-void
+int
txt_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
char *svcname, int flags)
{
- int x;
+ int x, ret = 0;
if (!rgl || !members)
- return;
+ return -1;
+
+ if (svcname)
+ ret = -1;
if (!(flags & RG_VERBOSE)) {
printf(" %-20.20s %-30.30s %-14.14s\n",
@@ -509,18 +512,32 @@
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
txt_rg_state(&rgl->rgl_states[x], members, flags);
+ if (svcname) {
+ switch (rgl->rgl_states[x].rs_state) {
+ case RG_STATE_STARTING:
+ case RG_STATE_STARTED:
+ case RG_STATE_STOPPING:
+ ret = 0;
+ break;
+ default:
+ ret = rgl->rgl_states[x].rs_state;
+ }
+ }
}
+
+ return ret;
}
-void
+int
xml_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
char *svcname)
{
int x;
+ int ret = 0;
if (!rgl || !members)
- return;
+ return -1;
printf(" <groups>\n");
@@ -528,14 +545,23 @@
if (svcname &&
strcmp(rgl->rgl_states[x].rs_name, svcname))
continue;
- xml_rg_state(&rgl->rgl_states[x], members, 0);
+ if (svcname) {
+ switch (rgl->rgl_states[x].rs_state) {
+ case RG_STATE_STARTING:
+ case RG_STATE_STARTED:
+ case RG_STATE_STOPPING:
+ break;
+ default:
+ ret = rgl->rgl_states[x].rs_state;
+ }
+ }
}
printf(" </groups>\n");
+ return ret;
}
-
void
txt_quorum_state(int qs)
{
@@ -609,10 +635,15 @@
}
-void
+int
txt_member_states(cluster_member_list_t *membership, char *name)
{
- int x;
+ int x, ret = 0;
+
+ if (!membership) {
+ printf("Membership information not available\n");
+ return -1;
+ }
printf(" %-34.34s %-4.4s %s\n", "Member Name", "ID", "Status");
printf(" %-34.34s %-4.4s %s\n", "------ ----", "----", "------");
@@ -621,35 +652,45 @@
if (name && strcmp(membership->cml_members[x].cn_name, name))
continue;
txt_member_state(&membership->cml_members[x]);
+ ret = !(membership->cml_members[x].cn_member & FLAG_UP);
}
printf("\n");
+ return ret;
}
-void
+int
xml_member_states(cluster_member_list_t *membership, char *name)
{
- int x;
+ int x, ret = 0;
- if (!membership)
- return;
+ if (!membership) {
+ printf(" <nodes/>\n");
+ return -1;
+ }
printf(" <nodes>\n");
for (x = 0; x < membership->cml_count; x++) {
if (name && strcmp(membership->cml_members[x].cn_name, name))
continue;
xml_member_state(&membership->cml_members[x]);
+ if (name)
+ ret = !(membership->cml_members[x].cn_member & FLAG_UP);
}
printf(" </nodes>\n");
+
+ return ret;
}
-void
+int
txt_cluster_status(int qs, cluster_member_list_t *membership,
rg_state_list_t *rgs, char *name, char *svcname,
int flags)
{
+ int ret;
+
if (!svcname && !name) {
txt_quorum_state(qs);
if (!membership) {
@@ -659,18 +700,22 @@
}
}
- if (!svcname || (name && svcname))
- txt_member_states(membership, name);
- if (!name || (name && svcname))
- txt_rg_states(rgs, membership, svcname, flags);
+ if (!svcname || (name && svcname))
+ ret = txt_member_states(membership, name);
+ if (name && !svcname)
+ return ret;
+ if (!name || (name && svcname))
+ ret = txt_rg_states(rgs, membership, svcname, flags);
+ return ret;
}
-void
+int
xml_cluster_status(int qs, cluster_member_list_t *membership,
rg_state_list_t *rgs, char *name, char *svcname,
int flags)
{
+ int ret1 = 0, ret2 = -1;
int x;
printf("<?xml version=\"1.0\"?>\n");
@@ -690,36 +735,24 @@
}
}
- if (!svcname && !name)
- xml_quorum_state(qs);
- if (!svcname || (name && svcname))
- xml_member_states(membership, name);
- if (rgs &&
- (!name || (name && svcname)))
- xml_rg_states(rgs, membership, svcname);
- printf("</clustat>\n");
+ if (!svcname && !name)
+ xml_quorum_state(qs);
+ if (!svcname || (name && svcname))
+ ret1 = xml_member_states(membership, name);
+
+ if (rgs &&
+ (!name || (name && svcname)))
+ ret2 = xml_rg_states(rgs, membership, svcname);
+ printf("</clustat>\n");
+
+ if (name && ret1)
+ return ret1;
+ if (svcname && ret2)
+ return ret2;
+ return 0;
}
-void
-dump_node(cman_node_t *node)
-{
- printf("Node %s state %02x\n", node->cn_name, node->cn_member);
-}
-
-
-void
-dump_nodes(cluster_member_list_t *nodes)
-{
- int x;
-
- for (x=0; x<nodes->cml_count; x++) {
- dump_node(&nodes->cml_members[x]);
- }
-}
-
-
-
cluster_member_list_t *
build_member_list(cman_handle_t ch, int *lid)
{
@@ -924,11 +957,13 @@
}
if (xml)
- xml_cluster_status(qs, membership, rgs, member_name,
- rg_name,flags);
+ ret = xml_cluster_status(qs, membership, rgs,
+ member_name, rg_name,
+ flags);
else
- txt_cluster_status(qs, membership, rgs, member_name,
- rg_name,flags);
+ ret = txt_cluster_status(qs, membership, rgs,
+ member_name, rg_name,
+ flags);
if (membership)
free_member_list(membership);
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2006-10-12 22:07 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2006-10-12 22:07 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2006-10-12 22:07:57
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Ancillary patch to fix 202492 and actually add back groupmember attr, not just rgmanager (per-node) attr
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.24&r2=1.25
--- cluster/rgmanager/src/utils/clustat.c 2006/10/06 21:22:28 1.24
+++ cluster/rgmanager/src/utils/clustat.c 2006/10/12 22:07:57 1.25
@@ -549,13 +549,20 @@
void
xml_quorum_state(int qs)
{
+ /* XXX output groupmember attr (carry over from RHCS4) */
printf(" <quorum ");
- if (qs) {
- printf("quorate=\"1\"/>");
+ if (qs & FLAG_UP) {
+ printf("quorate=\"1\"");
+ } else {
+ printf("quorate=\"0\"\n");
+ }
+ if (qs & FLAG_RGMGR) {
+ printf(" groupmember=\"1\"");
} else {
- printf("quorate=\"0\"/>\n");
+ printf(" groupmember=\"0\"");
}
+ printf("/>\n");
}
@@ -661,9 +668,25 @@
rg_state_list_t *rgs, char *name, char *svcname,
int flags)
{
+ int x;
+
printf("<?xml version=\"1.0\"?>\n");
printf("<clustat version=\"4.1.1\">\n");
+ if (qs) {
+ qs = FLAG_UP;
+ if (membership) {
+ for (x = 0; x < membership->cml_count; x++) {
+ if ((membership->cml_members[x].cn_member &
+ (FLAG_LOCAL|FLAG_RGMGR)) ==
+ (FLAG_LOCAL|FLAG_RGMGR)) {
+ qs |= FLAG_RGMGR;
+ break;
+ }
+ }
+ }
+ }
+
if (!svcname && !name)
xml_quorum_state(qs);
if (!svcname || (name && svcname))
@@ -722,6 +745,11 @@
all = part;
}
+ if (!all) {
+ *lid = 0;
+ return NULL;
+ }
+
/* Grab the local node ID and flag it from the list of reported
online nodes */
*lid = get_my_nodeid(ch);
@@ -844,6 +872,10 @@
/* Connect & grab all our info */
ch = cman_init(NULL);
+ if (!ch) {
+ printf("CMAN is not running.\n");
+ return 1;
+ }
switch(runtype) {
case QSTAT_ONLY:
^ permalink raw reply [flat|nested] 23+ messages in thread* [Cluster-devel] cluster/rgmanager/src/utils clustat.c
@ 2006-09-27 16:43 lhh
0 siblings, 0 replies; 23+ messages in thread
From: lhh @ 2006-09-27 16:43 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2006-09-27 16:43:39
Modified files:
rgmanager/src/utils: clustat.c
Log message:
Clean up build
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.22&r2=1.23
--- cluster/rgmanager/src/utils/clustat.c 2006/09/27 16:32:13 1.22
+++ cluster/rgmanager/src/utils/clustat.c 2006/09/27 16:43:39 1.23
@@ -716,8 +716,11 @@
case 's':
rg_name = optarg;
if (!strchr(rg_name,':')) {
- snprintf(real_rg_name, , sizeof(real_rg_name), "service:%s", rg_name);
+ snprintf(real_rg_name,
+ sizeof(real_rg_name),
+ "service:%s", rg_name);
rg_name = real_rg_name;
+ }
break;
case 'x':
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2007-12-10 18:24 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-13 17:12 [Cluster-devel] cluster/rgmanager/src/utils clustat.c lhh
-- strict thread matches above, loose matches on Subject: below --
2007-12-10 18:24 lhh
2007-12-10 18:11 lhh
2007-12-06 17:52 lhh
2007-12-06 17:47 lhh
2007-11-30 19:47 lhh
2007-09-19 10:56 pcaulfield
2007-02-06 20:22 lhh
2007-02-06 20:21 lhh
2007-02-06 20:20 lhh
2007-02-06 20:18 lhh
2007-02-06 19:54 lhh
2007-01-29 19:42 lhh
2007-01-29 19:41 lhh
2007-01-29 19:40 lhh
2007-01-29 19:40 lhh
2007-01-26 21:38 lhh
2007-01-17 16:21 lhh
2007-01-17 16:20 lhh
2007-01-17 16:19 lhh
2006-12-13 18:36 lhh
2006-10-12 22:07 lhh
2006-09-27 16:43 lhh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).