Skip to contentSkip to conversation

lose xfs_hex_dump in favor of print_hex_dump

PATCH In review Eric Sandeen 3 participants 4 messages Sep 25, 2007 XFS filesystem

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 lose xfs_hex_dump in favor of print_hex_dump

No need for xfs to have its own hex dumping routine now that the kernel has one.

fs/xfs/xfs_error.c +0 -31
Index: linux-2.6-xfs/fs/xfs/xfs_error.c
===================================================================
@@ -230,37 +230,6 @@ xfs_error_report(
 	}
 }
 
-STATIC void
-xfs_hex_dump(void *p, int length)
-{
-	__uint8_t *uip = (__uint8_t*)p;
-	int	i;
-	char	sbuf[128], *s;
-
-	s = sbuf;
-	*s = '\0';
-	for (i=0; i<length; i++, uip++) {
-		if ((i % 16) == 0) {
-			if (*s != '\0')
-				cmn_err(CE_ALERT, "%s\n", sbuf);
-			s = sbuf;
-			sprintf(s, "0x%x: ", i);
-			while( *s != '\0')
-				s++;
-		}
-		sprintf(s, "%02x ", *uip);
-
-		/*
-		 * the kernel sprintf is a void; user sprintf returns
-		 * the sprintf'ed string's length.  Find the new end-
-		 * of-string
-		 */
-		while( *s != '\0')
-			s++;
-	}
-	cmn_err(CE_ALERT, "%s\n", sbuf);
-}
-
 void
 xfs_corruption_error(
 	char		*tag,
fs/xfs/xfs_error.h +2 -0
Index: linux-2.6-xfs/fs/xfs/xfs_error.h
===================================================================
@@ -174,6 +174,8 @@ extern void xfs_cmn_err(int panic_tag, i
 /* PRINTFLIKE3 */
 extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...);
 
+extern void xfs_hex_dump(void *p, int length);
+
 #define xfs_fs_repair_cmn_err(level, mp, fmt, args...) \
 	xfs_fs_cmn_err(level, mp, fmt "  Unmount and run xfs_repair.", ## args)
 
fs/xfs/support/debug.c +6 -0
Index: linux-2.6-xfs/fs/xfs/support/debug.c
===================================================================
@@ -81,3 +81,9 @@ assfail(char *expr, char *file, int line
 	printk("Assertion failed: %s, file: %s, line: %d\n", expr, file, line);
 	BUG();
 }
+
+void
+xfs_hex_dump(void *p, int length)
+{
+	print_hex_dump(KERN_ALERT, "", DUMP_PREFIX_OFFSET, 16, 1, p, length, 1);
+}
#1 lore raw

fs/xfs/support/debug.c assfail(char *expr, char *file, int line · line 89

Quoted 8 lines · Eric Sandeen
fs/xfs/support/debug.c +7 -0
+extern void xfs_hex_dump(void *p, int length);
+
 
+void
+xfs_hex_dump(void *p, int length)
+{
+	print_hex_dump(KERN_ALERT, "", DUMP_PREFIX_OFFSET, 16, 1, p, length, 1);
+}

Is this symbol exported/needed? If not then why not make it a #define or an inline in the header where you have the prototype?

#2 lore raw
Quoted 5 lines · Chris Wedgwood
Quoted 2 lines · Eric Sandeen
fs/xfs/xfs_error.h +2 -0
+extern void xfs_hex_dump(void *p, int length);
+
Quoted 8 lines

fs/xfs/support/debug.c assfail(char *expr, char *file, int line · line 89

Quoted 5 lines
fs/xfs/support/debug.c +5 -0
+void
+xfs_hex_dump(void *p, int length)
+{
+	print_hex_dump(KERN_ALERT, "", DUMP_PREFIX_OFFSET, 16, 1, p, length, 1);
+}

Is this symbol exported/needed? If not then why not make it a #define or an inline in the header where you have the prototype?

Yeah, I suppose that might be better.... I just followed the lead of xfs_cmn_err etc.

The only reason I left a wrapper was for cattelan's BSD exploits (er, adventures) ;-) I could imagine it getting called from other places, but for now it only has one caller, xfs_corruption_error (so really, even the length argument is never anything other than 16...)

-Eric

#3 lore raw
Quoted 9 lines · Eric Sandeen
Quoted 8 lines

fs/xfs/support/debug.c assfail(char *expr, char *file, int line · line 89

Quoted 5 lines
fs/xfs/support/debug.c +5 -0
+void
+xfs_hex_dump(void *p, int length)
+{
+	print_hex_dump(KERN_ALERT, "", DUMP_PREFIX_OFFSET, 16, 1, p, length, 1);
+}

Is this symbol exported/needed? If not then why not make it a #define or an inline in the header where you have the prototype?

Quoted 7 lines

Yeah, I suppose that might be better.... I just followed the lead of xfs_cmn_err etc.

The only reason I left a wrapper was for cattelan's BSD exploits (er, adventures) ;-) I could imagine it getting called from other places, but for now it only has one caller, xfs_corruption_error (so really, even the length argument is never anything other than 16...)

No point in making anything in an absolute slowpath inline or a macro. I think the patch is fine as-is.