From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16403 invoked by alias); 14 Oct 2008 19:22:19 -0000 Received: (qmail 16350 invoked by alias); 14 Oct 2008 19:22:19 -0000 X-Spam-Status: No, hits=0.8 required=5.0 tests=AWL,BAYES_50,J_CHICKENPOX_43,J_CHICKENPOX_63,KAM_MX,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on bastion.fedora.phx.redhat.com X-Spam-Level: Subject: The tag: cmirror_1_1_27 has been created To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/tags/cmirror_1_1_27 X-Git-Reftype: tag X-Git-Oldrev: 1bdbccd4f017a628027644bf232910d0becd0579 X-Git-Newrev: 5dc473236dc19be6295beb422b8732b684a1fde8 From: Chris Feist Message-Id: <20081014192052.CAEDAC07D4@lists.fedorahosted.org> Date: Tue, 14 Oct 2008 19:22:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2008-q4/txt/msg00043.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=5dc473236dc19be6295beb422b8732b684a1fde8 Commit: 5dc473236dc19be6295beb422b8732b684a1fde8 Parent: 1bdbccd4f017a628027644bf232910d0becd0579 Author: David Teigland AuthorDate: Tue Oct 14 14:02:35 2008 -0500 Committer: David Teigland CommitterDate: Tue Oct 14 14:04:06 2008 -0500 gfs_control: improve ls output copy what was done with fence_tool and dlm_tool. Signed-off-by: David Teigland --- group/gfs_control/main.c | 114 +++++++++++++++++++++++++++++++--------------- group/tool/main.c | 11 ++++- 2 files changed, 86 insertions(+), 39 deletions(-) diff --git a/group/gfs_control/main.c b/group/gfs_control/main.c index 7b90987..4bfb392 100644 --- a/group/gfs_control/main.c +++ b/group/gfs_control/main.c @@ -169,58 +169,92 @@ void do_leave(char *table) fprintf(stderr, "gfs_controld leave error %d\n", rv); } -char *gfsc_mf_str(uint32_t flags) +char *mg_flags_str(uint32_t flags) { static char str[128]; + int i = 0; memset(str, 0, sizeof(str)); - if (flags & GFSC_MF_JOINING) - strcat(str, "joining "); - if (flags & GFSC_MF_LEAVING) - strcat(str, "leaving "); - if (flags & GFSC_MF_KERNEL_STOPPED) - strcat(str, "kernel_stopped "); - if (flags & GFSC_MF_KERNEL_MOUNT_DONE) - strcat(str, "kernel_mount_done "); - if (flags & GFSC_MF_KERNEL_MOUNT_ERROR) - strcat(str, "kernel_mount_error "); - if (flags & GFSC_MF_FIRST_RECOVERY_NEEDED) - strcat(str, "first_recovery_needed "); + if (flags & GFSC_MF_LOCAL_RECOVERY_BUSY) { + i++; + strcat(str, "recover"); + } + if (flags & GFSC_MF_FIRST_RECOVERY_NEEDED) { + strcat(str, i++ ? "," : ""); + strcat(str, "need_first"); + } + if (flags & GFSC_MF_KERNEL_MOUNT_ERROR) { + strcat(str, i++ ? "," : ""); + strcat(str, "error"); + } + if (flags & GFSC_MF_KERNEL_MOUNT_DONE) { + strcat(str, i++ ? "," : ""); + strcat(str, "mounted"); + } + if (flags & GFSC_MF_KERNEL_STOPPED) { + strcat(str, i++ ? "," : ""); + strcat(str, "blocked"); + } + if (flags & GFSC_MF_LEAVING) { + strcat(str, i++ ? "," : ""); + strcat(str, "leave"); + } + if (flags & GFSC_MF_JOINING) { + strcat(str, i++ ? "," : ""); + strcat(str, "join"); + } + + /* leave this one out, it will often be set and we don't need + to see it */ + /* if (flags & GFSC_MF_FIRST_RECOVERY_MSG) strcat(str, "first_recovery_msg "); - if (flags & GFSC_MF_LOCAL_RECOVERY_BUSY) - strcat(str, "local_recovery_busy "); - + */ return str; } -char *gfsc_nf_str(uint32_t flags) +char *node_mount_str(uint32_t flags) { static char str[128]; + int i = 0; memset(str, 0, sizeof(str)); - if (flags & GFSC_NF_MEMBER) - strcat(str, "member "); - if (flags & GFSC_NF_START) - strcat(str, "start "); - if (flags & GFSC_NF_DISALLOWED) - strcat(str, "disallowed "); - if (flags & GFSC_NF_KERNEL_MOUNT_DONE) - strcat(str, "kernel_mount_done "); - if (flags & GFSC_NF_KERNEL_MOUNT_ERROR) - strcat(str, "kernel_mount_error "); - if (flags & GFSC_NF_READONLY) - strcat(str, "readonly "); - if (flags & GFSC_NF_SPECTATOR) - strcat(str, "spectator "); - if (flags & GFSC_NF_CHECK_DLM) - strcat(str, "check_dlm "); + if (flags & GFSC_NF_KERNEL_MOUNT_DONE) { + i++; + strcat(str, "done"); + } + if (flags & GFSC_NF_KERNEL_MOUNT_ERROR) { + strcat(str, i++ ? "," : ""); + strcat(str, "error"); + } + if (flags & GFSC_NF_READONLY) { + strcat(str, i++ ? "," : ""); + strcat(str, "ro"); + } + if (flags & GFSC_NF_SPECTATOR) { + strcat(str, i++ ? "," : ""); + strcat(str, "spect"); + } + + if (!i) + strcat(str, "none"); + + /* ignoring CHECK_DLM */ return str; } +int member_int(struct gfsc_node *n) +{ + if (n->flags & GFSC_NF_DISALLOWED) + return -1; + if (n->flags & GFSC_NF_MEMBER) + return 1; + return 0; +} + char *condition_str(int cond) { switch (cond) { @@ -266,7 +300,7 @@ static void show_mg(struct gfsc_mountgroup *mg) printf("name %s\n", mg->name); printf("id 0x%08x\n", mg->global_id); printf("flags 0x%08x %s\n", - mg->flags, gfsc_mf_str(mg->flags)); + mg->flags, mg_flags_str(mg->flags)); printf("change member %d joined %d remove %d failed %d seq %d,%d\n", mg->cg_prev.member_count, mg->cg_prev.joined_count, mg->cg_prev.remove_count, mg->cg_prev.failed_count, @@ -318,9 +352,15 @@ static void show_all_nodes(int count, struct gfsc_node *nodes) int i; for (i = 0; i < count; i++) { - printf("nodeid %d jid %d add_seq %u rem_seq %u failed %d flags 0x%x %s\n", - n->nodeid, n->jid, n->added_seq, n->removed_seq, - n->failed_reason, n->flags, gfsc_nf_str(n->flags)); + printf("nodeid %d jid %d member %d failed %d start %d seq_add %u seq_rem %u mount %s\n", + n->nodeid, + n->jid, + member_int(n), + n->failed_reason, + (n->flags & GFSC_NF_START) ? 1 : 0, + n->added_seq, + n->removed_seq, + node_mount_str(n->flags)); n++; } } diff --git a/group/tool/main.c b/group/tool/main.c index 9feb36b..d7283a0 100644 --- a/group/tool/main.c +++ b/group/tool/main.c @@ -37,6 +37,7 @@ static int operation; static int opt_ind; static int verbose; static int all_daemons; +static int ls_all_nodes; static int print_header_done; @@ -84,6 +85,8 @@ static void print_usage(void) printf("\n"); printf("Options:\n"); printf(" -v Verbose output, extra event information\n"); + printf(" -a fence_tool ls; dlm_tool ls; gfs_control ls\n"); + printf(" -n Show all node information with -a\n"); printf(" -h Print this help, then exit\n"); printf(" -V Print program version information, then exit\n"); printf("\n"); @@ -103,7 +106,7 @@ static void print_usage(void) printf("\n"); } -#define OPTION_STRING "ahVv" +#define OPTION_STRING "ahVvn" static void decode_arguments(int argc, char **argv) { @@ -118,6 +121,10 @@ static void decode_arguments(int argc, char **argv) all_daemons = 1; break; + case 'n': + ls_all_nodes = 1; + break; + case 'v': verbose = 1; break; @@ -609,7 +616,7 @@ int main(int argc, char **argv) switch (operation) { case OP_LIST: if (all_daemons) { - if (verbose) { + if (verbose || ls_all_nodes) { system("fence_tool ls -n"); system("dlm_tool ls -n"); system("gfs_control ls -n");