This is the mail archive of the cluster-cvs@sourceware.org mailing list for the cluster.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

master - gfs_control: improve ls output


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=5dc473236dc19be6295beb422b8732b684a1fde8
Commit:        5dc473236dc19be6295beb422b8732b684a1fde8
Parent:        1bdbccd4f017a628027644bf232910d0becd0579
Author:        David Teigland <teigland@redhat.com>
AuthorDate:    Tue Oct 14 14:02:35 2008 -0500
Committer:     David Teigland <teigland@redhat.com>
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 <teigland@redhat.com>
---
 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");


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]