cluster: RHEL55 - rgmanager: Allow exit while waiting for fencing
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 24459991cecae2cf4786fbeb1c3123ab0714fc65
Parent: fd4876528b72d9cf06fa06b2ea992ee314ca0d72
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Thu Jun 25 15:27:52 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Sep 28 15:14:23 2009 -0400
rgmanager: Allow exit while waiting for fencing
Resolves: bz508147
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/daemons/main.c | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/rgmanager/src/daemons/main.c b/rgmanager/src/daemons/main.c
index 94de2d3..d795bab 100644
--- a/rgmanager/src/daemons/main.c
+++ b/rgmanager/src/daemons/main.c
@@ -952,20 +952,25 @@ clu_initialize(cman_handle_t *ch)
}
-void
+int
wait_for_fencing(void)
{
if (node_has_fencing(my_id()) && !fence_domain_joined()) {
clulog(LOG_INFO, "Waiting for fence domain join operation "
"to complete\n");
- while (fence_domain_joined() == 0)
+ while (fence_domain_joined() == 0) {
+ if (shutdown_pending)
+ return 1;
sleep(1);
+ }
clulog(LOG_INFO, "Fence domain joined\n");
} else {
clulog(LOG_DEBUG, "Fence domain already joined "
"or no fencing configured\n");
}
+
+ return 0;
}
@@ -1057,6 +1062,7 @@ main(int argc, char **argv)
}
if (clu_lock_init(rgmanager_lsname) != 0) {
+ cman_finish(clu);
printf("Locks not working!\n");
return -1;
}
@@ -1073,7 +1079,8 @@ main(int argc, char **argv)
clulog(LOG_INFO, "I am node #%d\n", my_id());
- wait_for_fencing();
+ if (wait_for_fencing() != 0)
+ goto out_cleanup;
/*
We know we're quorate. At this point, we need to
@@ -1087,6 +1094,9 @@ main(int argc, char **argv)
return -1;
}
+ if (shutdown_pending)
+ goto out_cleanup;
+
if (msg_listen(MSG_SOCKET, RGMGR_SOCK, me.cn_nodeid, &local_ctx) < 0) {
clulog(LOG_CRIT,
"#10: Couldn't set up cluster message system: %s\n",
@@ -1146,6 +1156,8 @@ main(int argc, char **argv)
if (rg_initialized())
cleanup(cluster_ctx);
+
+out_cleanup:
clulog(LOG_NOTICE, "Shutdown complete, exiting\n");
clu_lock_finished(rgmanager_lsname);
cman_finish(clu);
14 years, 7 months
dlm: master - dlm_controld: fix set_fs_notified when ls doesn't exist
by David Teigland
Gitweb: http://git.fedorahosted.org/git/dlm.git?p=dlm.git;a=commitdiff;h=e0a21476...
Commit: e0a214768b9b91e4b466405f0d24c4c634e6cfb2
Parent: 47d2b45af016d154258e9b7d5249dfe2c31ecffc
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Mon Sep 28 12:10:43 2009 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Mon Sep 28 12:16:16 2009 -0500
dlm_controld: fix set_fs_notified when ls doesn't exist
If a node fails during mount of cluster fs before joining
the dlm lockspace, then the fs_controld and dlm_controld
would never be able to sync up, since dlm_controld would
never have seen the failed node that fs_controld wants to
recover. The two daemons would sit spinning, retrying
and replying for the fs_notified check.
Signed-off-by: David Teigland <teigland(a)redhat.com>
---
group/dlm_controld/cpg.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/group/dlm_controld/cpg.c b/group/dlm_controld/cpg.c
index 1eff685..d5245ce 100644
--- a/group/dlm_controld/cpg.c
+++ b/group/dlm_controld/cpg.c
@@ -2293,6 +2293,11 @@ int set_fs_notified(struct lockspace *ls, int nodeid)
return -ESRCH;
}
+ if (!find_memb(ls->started_change, nodeid)) {
+ log_group(ls, "set_fs_notified %d not in ls", nodeid);
+ return 0;
+ }
+
/* this can happen, we haven't seen a nodedown for this node yet,
but we should soon */
if (!node->check_fs) {
14 years, 7 months
cluster: STABLE3 - dlm_controld: fix set_fs_notified when ls doesn't exist
by David Teigland
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 87212596001faaefb9a10ec8f6678a877dc907bb
Parent: d440c5f62d95c1ee4e59f9daff12fc64b29e4e3d
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Mon Sep 28 12:10:43 2009 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Mon Sep 28 12:15:34 2009 -0500
dlm_controld: fix set_fs_notified when ls doesn't exist
If a node fails during mount of cluster fs before joining
the dlm lockspace, then the fs_controld and dlm_controld
would never be able to sync up, since dlm_controld would
never have seen the failed node that fs_controld wants to
recover. The two daemons would sit spinning, retrying
and replying for the fs_notified check.
Signed-off-by: David Teigland <teigland(a)redhat.com>
---
group/dlm_controld/cpg.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/group/dlm_controld/cpg.c b/group/dlm_controld/cpg.c
index 1eff685..d5245ce 100644
--- a/group/dlm_controld/cpg.c
+++ b/group/dlm_controld/cpg.c
@@ -2293,6 +2293,11 @@ int set_fs_notified(struct lockspace *ls, int nodeid)
return -ESRCH;
}
+ if (!find_memb(ls->started_change, nodeid)) {
+ log_group(ls, "set_fs_notified %d not in ls", nodeid);
+ return 0;
+ }
+
/* this can happen, we haven't seen a nodedown for this node yet,
but we should soon */
if (!node->check_fs) {
14 years, 7 months
gfs2-utils: master - install mkfs.gfs2 into /sbin, not /usr/sbin
by Jim Meyering
Gitweb: http://git.fedorahosted.org/git/gfs2-utils.git?p=gfs2-utils.git;a=commitd...
Commit: 457549978cfc2ad00c56df2cca0dccfcf6f49cb6
Parent: 2a2ebaa7b22b754da4401cb1bdceef4ea0573406
Author: Jim Meyering <meyering(a)redhat.com>
AuthorDate: Mon Sep 28 17:32:04 2009 +0200
Committer: Jim Meyering <meyering(a)redhat.com>
CommitterDate: Mon Sep 28 17:32:04 2009 +0200
install mkfs.gfs2 into /sbin, not /usr/sbin
* gfs2/fsck/Makefile.am (sbindir): Adapt sbindir override to work.
This may be required solely for automake-1.11 and newer, but I
haven't confirmed.
---
gfs2/fsck/Makefile.am | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/gfs2/fsck/Makefile.am b/gfs2/fsck/Makefile.am
index ac89524..e6a621f 100644
--- a/gfs2/fsck/Makefile.am
+++ b/gfs2/fsck/Makefile.am
@@ -1,9 +1,12 @@
MAINTAINERCLEANFILES = Makefile.in
-# install into /sbin, not /usr/sbin
-sbindir := $(shell test '$(exec_prefix):$(sbindir)' = /usr:/usr/sbin \
- && echo /sbin \
- || echo '$(exec_prefix)/sbin')
+# When an exec_prefix setting would have us install into /usr/sbin,
+# use /sbin instead.
+# Accept an existing sbindir value of /usr/sbin (probably for older automake),
+# or an empty value, for automake-1.11 and newer.
+sbindir := $(shell rpl=0; test '$(exec_prefix):$(sbindir)' = /usr:/usr/sbin \
+ || test '$(exec_prefix):$(sbindir)' = /usr: && rpl=1; \
+ test $$rpl = 1 && echo /sbin || echo '$(exec_prefix)/sbin')
sbin_PROGRAMS = fsck.gfs2
14 years, 7 months
cluster: RHEL55 - rgmanager: Fix error message
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: fd4876528b72d9cf06fa06b2ea992ee314ca0d72
Parent: 7215e7160a3e32c84d4fa27c1f959b04239243d7
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Mon Jun 22 14:18:25 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Sep 28 11:42:32 2009 -0400
rgmanager: Fix error message
Resolves: bz507431
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/daemons/slang_event.c | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/rgmanager/src/daemons/slang_event.c b/rgmanager/src/daemons/slang_event.c
index a9b69ab..0ef2014 100644
--- a/rgmanager/src/daemons/slang_event.c
+++ b/rgmanager/src/daemons/slang_event.c
@@ -452,9 +452,8 @@ sl_service_property(char *svcName, char *prop)
ret = strdup(buf);
if (!ret) {
SLang_verror(SL_RunTime_Error,
- (char *)"%s: Failed to duplicate state of %s",
- __FUNCTION__,
- svcName);
+ (char *)"%s: Failed to duplicate %s property of %s",
+ __FUNCTION__, prop, svcName);
return;
}
14 years, 7 months
cluster: RHEL55 - rgmanager: follow-service.sl stack cleanup
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 7215e7160a3e32c84d4fa27c1f959b04239243d7
Parent: 0500b5311a809ea119599488374ef094b633f1d5
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Tue Jun 23 15:43:14 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Sep 28 11:35:41 2009 -0400
rgmanager: follow-service.sl stack cleanup
Resolves: bz507431
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/resources/follow-service.sl | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/rgmanager/src/resources/follow-service.sl b/rgmanager/src/resources/follow-service.sl
index 639fb7c..f823205 100644
--- a/rgmanager/src/resources/follow-service.sl
+++ b/rgmanager/src/resources/follow-service.sl
@@ -40,7 +40,7 @@ define nodelist_online(service_name) {
%
define follow_service(svc1, svc2, master) %, followslave)
{
- variable state, owner_svc1, owner_svc2;
+ variable state_svc1, state_svc2, owner_svc1, owner_svc2;
variable nodes1, nodes2, allowed;
debug("*** FOLLOW_SERVICE: follow_service(",svc1,", ",svc2,", ", master, ")");
@@ -55,11 +55,11 @@ define follow_service(svc1, svc2, master) %, followslave)
}
% get infos we need to decide further
- (owner_svc1, state) = service_status(svc1);
- (owner_svc2, state) = service_status(svc2);
+ (,,, owner_svc1, state_svc1) = service_status(svc1);
+ (,,, owner_svc2, state_svc2) = service_status(svc2);
nodes1 = nodelist_online(svc1);
nodes2 = nodelist_online(svc2);
- debug("*** FOLLOW_SERVICE: service_status(",svc1,"): ", service_status(svc1));
+ debug("*** FOLLOW_SERVICE: service_status(",svc1,"): ", state_svc1);
debug("*** FOLLOW_SERVICE: owner_svc1: ", owner_svc1, ", owner_svc2: ", owner_svc2, ", nodes1: ", nodes1, ", nodes2: ", nodes2);
if (((event_type == EVENT_NODE) and (owner_svc1 == node_id) and (node_state == NODE_OFFLINE) and (owner_svc2 >=0)) or
@@ -91,7 +91,7 @@ define follow_service(svc1, svc2, master) %, followslave)
% either svc2 is the master or there are node were to start svc2
if ((master == svc2) or (length(allowed) > 0)) {
()=service_stop(svc2);
- ()=service_start(svc2, allowed);
+ ()=service_start(svc2, allowed);
}
}
else if (((event_type == EVENT_NODE) and (owner_svc2 == node_id) and (node_state == NODE_OFFLINE) and (owner_svc2 >=0)) or
14 years, 7 months
cluster: RHEL55 - rgmanager: Don't push NULL on to the S/Lang stack
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 0500b5311a809ea119599488374ef094b633f1d5
Parent: 51e9b45f109b1678413228f3654de55cb935ed90
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Mon Jun 22 14:14:53 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Sep 28 11:34:41 2009 -0400
rgmanager: Don't push NULL on to the S/Lang stack
Resolves: bz507431
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/daemons/slang_event.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/rgmanager/src/daemons/slang_event.c b/rgmanager/src/daemons/slang_event.c
index b3273ac..a9b69ab 100644
--- a/rgmanager/src/daemons/slang_event.c
+++ b/rgmanager/src/daemons/slang_event.c
@@ -449,8 +449,15 @@ sl_service_property(char *svcName, char *prop)
if (get_service_property(svcName, prop, buf, sizeof(buf)) < 0)
return;
- /* does this work or do I have to push a malloce'd string? */
ret = strdup(buf);
+ if (!ret) {
+ SLang_verror(SL_RunTime_Error,
+ (char *)"%s: Failed to duplicate state of %s",
+ __FUNCTION__,
+ svcName);
+ return;
+ }
+
if (SLang_push_malloced_string(ret) < 0) {
SLang_verror(SL_RunTime_Error,
(char *)"%s: Failed to push %s property of %s",
14 years, 7 months
cluster: RHEL55 - rgmanager: Fix small memory leak
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 51e9b45f109b1678413228f3654de55cb935ed90
Parent: e9277676d10b511efee18342b60088bfd85e0ba9
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Fri Jun 19 22:59:53 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Sep 28 11:33:55 2009 -0400
rgmanager: Fix small memory leak
Resolves: bz507431
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/daemons/slang_event.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/rgmanager/src/daemons/slang_event.c b/rgmanager/src/daemons/slang_event.c
index c3c337c..b3273ac 100644
--- a/rgmanager/src/daemons/slang_event.c
+++ b/rgmanager/src/daemons/slang_event.c
@@ -440,16 +440,23 @@ out:
/**
get_service_property(service_name, property)
*/
-char *
+static void
sl_service_property(char *svcName, char *prop)
{
char buf[96];
+ char *ret;
if (get_service_property(svcName, prop, buf, sizeof(buf)) < 0)
- return NULL;
+ return;
/* does this work or do I have to push a malloce'd string? */
- return strdup(buf);
+ ret = strdup(buf);
+ if (SLang_push_malloced_string(ret) < 0) {
+ SLang_verror(SL_RunTime_Error,
+ (char *)"%s: Failed to push %s property of %s",
+ __FUNCTION__, prop, svcName);
+ free(ret);
+ }
}
14 years, 7 months
cluster: RHEL55 - rgmanager: Fix stack overflows on stress testing
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: e9277676d10b511efee18342b60088bfd85e0ba9
Parent: bb374dab9bbb30fd3180810ccac43db7ba8d8001
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Fri Jun 19 18:20:46 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Sep 28 11:33:14 2009 -0400
rgmanager: Fix stack overflows on stress testing
S/Lang requires you to eat all the values on the
stack if not assigned, or you can discard all values,
but you can't take 2/5 without explicitly discarding
the other three.
Resolves: bz507431
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/resources/default_event_script.sl | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/rgmanager/src/resources/default_event_script.sl b/rgmanager/src/resources/default_event_script.sl
index 9144526..7809b20 100644
--- a/rgmanager/src/resources/default_event_script.sl
+++ b/rgmanager/src/resources/default_event_script.sl
@@ -36,7 +36,7 @@ define separate_nodes(node_list)
len = length(services);
for (x = 0; x < len; x++) {
- (owner, state) = service_status(services[x]);
+ (,,, owner, state) = service_status(services[x]);
if (owner < 0) {
continue;
}
@@ -99,7 +99,7 @@ define exclusive_prioritize(svc, node_list)
continue;
}
- (owner, state) = service_status(services[x]);
+ (,,, owner, state) = service_status(services[x]);
if (owner < 0) {
continue;
}
@@ -148,14 +148,14 @@ define move_or_start(service, node_list)
depends = service_property(service, "depend");
if (depends != "") {
- (owner, state) = service_status(depends);
+ (,,, owner, state) = service_status(depends);
if (owner < 0) {
debug(service, " is not runnable; dependency not met");
return ERR_DEPEND;
}
}
- (owner, state) = service_status(service);
+ (,,, owner, state) = service_status(service);
debug("Evaluating ", service, " state=", state, " owner=", owner);
len = length(node_list);
@@ -220,7 +220,7 @@ define allowed_nodes(service)
(nofailback, restricted, ordered, nodes_domain) =
service_domain_info(service);
- (owner, state) = service_status(service);
+ (,,, owner, state) = service_status(service);
anodes = nodes_online();
@@ -270,7 +270,7 @@ define allowed_nodes(service)
(nofailback, restricted, ordered, nodes_domain) =
service_domain_info(service);
- (owner, state) = service_status(service);
+ (,,, owner, state) = service_status(service);
anodes = nodes_online();
@@ -481,7 +481,7 @@ define default_service_event_handler()
continue;
}
- (owner, state) = service_status(services[x]);
+ (,,, owner, state) = service_status(services[x]);
if ((service_state == "started") and (owner < 0) and
(state == "stopped")) {
info("Dependency met; starting ", services[x]);
@@ -514,7 +514,7 @@ define default_user_event_handler()
variable owner, state;
nodes = allowed_nodes(service_name);
- (owner, state) = service_status(service_name);
+ (,,, owner, state) = service_status(service_name);
if (user_request == USER_RESTART) {
14 years, 7 months
cluster: STABLE3 - rgmanager: Fix -m and -s output when fed bad data
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: d440c5f62d95c1ee4e59f9daff12fc64b29e4e3d
Parent: 42c94746ebea6466e09daac3949c7a784e2a6dad
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Tue Sep 22 17:36:37 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Sep 28 11:14:11 2009 -0400
rgmanager: Fix -m and -s output when fed bad data
Resolves: rhbz#506346
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/utils/clustat.c | 73 +++++++++++++++++++++++++++++------------
1 files changed, 52 insertions(+), 21 deletions(-)
diff --git a/rgmanager/src/utils/clustat.c b/rgmanager/src/utils/clustat.c
index f638727..164d5b0 100644
--- a/rgmanager/src/utils/clustat.c
+++ b/rgmanager/src/utils/clustat.c
@@ -568,6 +568,20 @@ build_service_field_sizes(int cols, int *svcsize, int *nodesize, int *statsize)
}
+static void
+print_svc_header(int svcsize, int nodesize, int statsize)
+{
+ 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, "-----");
+}
+
+
static int
txt_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
char *svcname, int flags)
@@ -583,24 +597,20 @@ txt_rg_states(rg_state_list_t *rgl, cluster_member_list_t *members,
build_service_field_sizes(dimx, &svcsize, &nodesize, &statsize);
if (!(flags & RG_VERBOSE)) {
-
- 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, "-----");
+ if (!svcname)
+ print_svc_header(svcsize, nodesize, statsize);
} else {
printf("Service Information\n"
"------- -----------\n\n");
}
for (x = 0; x < rgl->rgl_count; x++) {
- if (svcname &&
- strcmp(rgl->rgl_states[x].rs_name, svcname))
- continue;
+ if (svcname) {
+ if (strcmp(rgl->rgl_states[x].rs_name, svcname)) {
+ continue;
+ }
+ print_svc_header(svcsize, nodesize, statsize);
+ }
txt_rg_state(&rgl->rgl_states[x], members, flags,
svcsize, nodesize, statsize);
if (svcname) {
@@ -777,10 +787,20 @@ xml_member_state(cman_node_t *node)
}
+static void
+print_member_header(nodesize)
+{
+ printf(" %-*.*s", nodesize, nodesize, "Member Name");
+ printf("%-4.4s %s\n", "ID", "Status");
+ printf(" %-*.*s", nodesize, nodesize, "------ ----");
+ printf("%-4.4s %s\n", "----", "------");
+}
+
+
static int
txt_member_states(cluster_member_list_t *membership, char *name)
{
- int x, ret = 0, nodesize;
+ int x, ret = -1, nodesize;
if (!membership) {
printf("Membership information not available\n");
@@ -789,19 +809,30 @@ txt_member_states(cluster_member_list_t *membership, char *name)
build_member_field_size(dimx, &nodesize);
- printf(" %-*.*s", nodesize, nodesize, "Member Name");
- printf("%-4.4s %s\n", "ID", "Status");
- printf(" %-*.*s", nodesize, nodesize, "------ ----");
- printf("%-4.4s %s\n", "----", "------");
+ if (!name) {
+ printf(" %-*.*s", nodesize, nodesize, "Member Name");
+ printf("%-4.4s %s\n", "ID", "Status");
+ printf(" %-*.*s", nodesize, nodesize, "------ ----");
+ printf("%-4.4s %s\n", "----", "------");
+ ret = 0;
+ }
for (x = 0; x < membership->cml_count; x++) {
- if (name && strcmp(membership->cml_members[x].cn_name, name))
- continue;
+ if (name) {
+ if (strcmp(membership->cml_members[x].cn_name, name)) {
+ continue;
+ }
+ print_member_header(nodesize);
+ }
txt_member_state(&membership->cml_members[x], nodesize);
- ret = !(membership->cml_members[x].cn_member & FLAG_UP);
+ if (name) {
+ ret = !(membership->cml_members[x].cn_member & FLAG_UP);
+ return ret;
+ }
}
- printf("\n");
+ if (!name)
+ printf("\n");
return ret;
}
14 years, 7 months