Thread (7 messages) 7 messages, 2 authors, 2021-01-28

Re: [PATCH 1/2] xfs_logprint: print misc buffers when using -o

From: "Darrick J. Wong" <djwong@kernel.org>
Date: 2021-01-28 17:36:51

On Thu, Jan 28, 2021 at 06:37:07PM +1100, Donald Douwsma wrote:
quoted hunk ↗ jump to hunk
Logprint only dumps raw buffers for unhandled misc buffer types, but
this information is generally useful when debugging logprint issues so
allow it to print whenever -o is used.

Switch to using the common xlog_print_data function to dump the buffer.

Signed-off-by: Donald Douwsma <redacted>
---
 logprint/log_misc.c      | 19 +++----------------
 logprint/log_print_all.c |  2 +-
 2 files changed, 4 insertions(+), 17 deletions(-)
diff --git a/logprint/log_misc.c b/logprint/log_misc.c
index c325f046..d44e9ff7 100644
--- a/logprint/log_misc.c
+++ b/logprint/log_misc.c
@@ -392,23 +392,10 @@ xlog_print_trans_buffer(char **ptr, int len, int *i, int num_ops)
 		}
 	} else {
 		printf(_("BUF DATA\n"));
-		if (print_data) {
-			uint *dp  = (uint *)*ptr;
-			int  nums = be32_to_cpu(head->oh_len) >> 2;
-			int  byte = 0;
-
-			while (byte < nums) {
-				if ((byte % 8) == 0)
-					printf("%2x ", byte);
-				printf("%8x ", *dp);
-				dp++;
-				byte++;
-				if ((byte % 8) == 0)
-					printf("\n");
-			}
-			printf("\n");
-		}
Nitpicking: One patch to collapse this into a xlog_recover_print_data
call as a no-functional-changes cleanup, then a second patch to make the
buffer dumps happen any time -D or -o are specified.

TBH the sb/agheader decoders probably need some serious updating to
handle newer fields.  It's also unfortunate that xfs_db doesn't know how
to decode log buffers; adding such a thing would be a neat way to enable
targetted fuzzing of log recovery.

--D
quoted hunk ↗ jump to hunk
 	}
+
+	xlog_recover_print_data(*ptr, be32_to_cpu(head->oh_len));
+
 	*ptr += be32_to_cpu(head->oh_len);
     }
     if (head && head->oh_flags & XLOG_CONTINUE_TRANS)
diff --git a/logprint/log_print_all.c b/logprint/log_print_all.c
index eafffe28..2b9e810d 100644
--- a/logprint/log_print_all.c
+++ b/logprint/log_print_all.c
@@ -176,8 +176,8 @@ xlog_recover_print_buffer(
 		} else {
 			printf(_("	BUF DATA\n"));
 			if (!print_buffer) continue;
-			xlog_recover_print_data(p, len);
 		}
+		xlog_recover_print_data(p, len);
 	}
 }
 
-- 
2.27.0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help