From: Matt Mackall <mpm@selenic.com>

Kill error_buf madness in ext2

Signed-off-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/fs/ext2/super.c |   45 +++++++++++++++++++++++----------------------
 1 files changed, 23 insertions(+), 22 deletions(-)

diff -puN fs/ext2/super.c~vprintk-for-ext2-errors fs/ext2/super.c
--- 25/fs/ext2/super.c~vprintk-for-ext2-errors	2004-07-31 17:13:10.584841384 -0700
+++ 25-akpm/fs/ext2/super.c	2004-07-31 17:13:10.588840776 -0700
@@ -37,8 +37,6 @@ static void ext2_sync_super(struct super
 static int ext2_remount (struct super_block * sb, int * flags, char * data);
 static int ext2_statfs (struct super_block * sb, struct kstatfs * buf);
 
-static char error_buf[1024];
-
 void ext2_error (struct super_block * sb, const char * function,
 		 const char * fmt, ...)
 {
@@ -52,16 +50,17 @@ void ext2_error (struct super_block * sb
 			cpu_to_le16(le16_to_cpu(es->s_state) | EXT2_ERROR_FS);
 		ext2_sync_super(sb, es);
 	}
-	va_start (args, fmt);
-	vsprintf (error_buf, fmt, args);
-	va_end (args);
-	if (test_opt (sb, ERRORS_PANIC))
-		panic ("EXT2-fs panic (device %s): %s: %s\n",
-		       sb->s_id, function, error_buf);
-	printk (KERN_CRIT "EXT2-fs error (device %s): %s: %s\n",
-		sb->s_id, function, error_buf);
-	if (test_opt (sb, ERRORS_RO)) {
-		printk ("Remounting filesystem read-only\n");
+
+	va_start(args, fmt);
+	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
+	vprintk(fmt, args);
+	printk("\n");
+	va_end(args);
+
+	if (test_opt(sb, ERRORS_PANIC))
+		panic("EXT2-fs panic from previous error\n");
+	if (test_opt(sb, ERRORS_RO)) {
+		printk("Remounting filesystem read-only\n");
 		sb->s_flags |= MS_RDONLY;
 	}
 }
@@ -79,12 +78,13 @@ NORET_TYPE void ext2_panic (struct super
 		mark_buffer_dirty(sbi->s_sbh);
 		sb->s_dirt = 1;
 	}
-	va_start (args, fmt);
-	vsprintf (error_buf, fmt, args);
-	va_end (args);
+	va_start(args, fmt);
+	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
+	vprintk(fmt, args);
+	printk("\n");
+	va_end(args);
 	sb->s_flags |= MS_RDONLY;
-	panic ("EXT2-fs panic (device %s): %s: %s\n",
-	       sb->s_id, function, error_buf);
+	panic("EXT2-fs panic forced\n");
 }
 
 void ext2_warning (struct super_block * sb, const char * function,
@@ -92,11 +92,12 @@ void ext2_warning (struct super_block * 
 {
 	va_list args;
 
-	va_start (args, fmt);
-	vsprintf (error_buf, fmt, args);
-	va_end (args);
-	printk (KERN_WARNING "EXT2-fs warning (device %s): %s: %s\n",
-		sb->s_id, function, error_buf);
+	va_start(args, fmt);
+	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
+	       sb->s_id, function);
+	vprintk(fmt, args);
+	printk("\n");
+	va_end(args);
 }
 
 void ext2_update_dynamic_rev(struct super_block *sb)
_