All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] Unify log messages in ext3
@ 2009-11-21 10:25 Alexey Fisher
  2009-11-21 23:55 ` Eric Sandeen
  0 siblings, 1 reply; 11+ messages in thread
From: Alexey Fisher @ 2009-11-21 10:25 UTC (permalink / raw)
  To: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso
  Cc: Alexey Fisher

make messages produced by ext3 more unified. It should be
easy to parse.

dmesg before patch:
[ 4893.684892] reservations ON
[ 4893.684896] xip option not supported
[ 4893.684964] EXT3-fs warning: maximal mount count reached, running
e2fsck is recommended

dmesg after patch:
[  873.300792] EXT3-fs (loop0): using internal journaln
[  873.300796] EXT3-fs (loop0): mounted filesystem with writeback data mode
[  924.163657] EXT3-fs (loop0): error: can't find ext3 filesystem on dev loop0.
[  723.755642] EXT3-fs (loop0): error: bad blocksize 8192
[  357.874687] EXT3-fs (loop0): error: no journal found. mounting ext3 over ext2?
[  873.300764] EXT3-fs (loop0): warning: maximal mount count reached, running e2fsck is recommended
[  924.163657] EXT3-fs (loop0): error: can't find ext3 filesystem on dev loop0.

Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
---
 fs/ext3/super.c |  422 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 223 insertions(+), 199 deletions(-)

diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 427496c..9931464 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -135,12 +135,24 @@ void ext3_journal_abort_handle(const char *caller, const char *err_fn,
 	if (is_handle_aborted(handle))
 		return;
 
-	printk(KERN_ERR "%s: aborting transaction: %s in %s\n",
-	       caller, errstr, err_fn);
+	printk(KERN_ERR "EXT3-fs: %s: aborting transaction: %s in %s\n",
+		caller, errstr, err_fn);
 
 	journal_abort_handle(handle);
 }
 
+void ext3_msg(struct super_block *sb, const char *prefix,
+		const char *fmt, ...)
+{
+	va_list args;
+
+	va_start(args, fmt);
+	printk("%sEXT3-fs (%s): ", prefix, sb->s_id);
+	vprintk(fmt, args);
+	printk("\n");
+	va_end(args);
+}
+
 /* Deal with the reporting of failure conditions on a filesystem such as
  * inconsistencies detected or read IO failures.
  *
@@ -174,12 +186,13 @@ static void ext3_handle_error(struct super_block *sb)
 			journal_abort(journal, -EIO);
 	}
 	if (test_opt (sb, ERRORS_RO)) {
-		printk (KERN_CRIT "Remounting filesystem read-only\n");
+		ext3_msg(sb, KERN_CRIT,
+			"error: remounting filesystem read-only");
 		sb->s_flags |= MS_RDONLY;
 	}
 	ext3_commit_super(sb, es, 1);
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT3-fs (device %s): panic forced after error\n",
+		panic("EXT3-fs (%s): panic forced after error\n",
 			sb->s_id);
 }
 
@@ -247,8 +260,7 @@ void __ext3_std_error (struct super_block * sb, const char * function,
 		return;
 
 	errstr = ext3_decode_error(sb, errno, nbuf);
-	printk (KERN_CRIT "EXT3-fs error (device %s) in %s: %s\n",
-		sb->s_id, function, errstr);
+	ext3_msg(sb, KERN_CRIT, "error in %s: %s", function, errstr);
 
 	ext3_handle_error(sb);
 }
@@ -268,21 +280,22 @@ void ext3_abort (struct super_block * sb, const char * function,
 {
 	va_list args;
 
-	printk (KERN_CRIT "ext3_abort called.\n");
+	ext3_msg(sb, KERN_CRIT, "ext3_abort called");
 
 	va_start(args, fmt);
-	printk(KERN_CRIT "EXT3-fs error (device %s): %s: ",sb->s_id, function);
+	printk(KERN_CRIT "EXT3-fs (%s): error: %s: ", sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
 
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT3-fs panic from previous error\n");
+		panic("EXT3-fs: panic from previous error\n");
 
 	if (sb->s_flags & MS_RDONLY)
 		return;
 
-	printk(KERN_CRIT "Remounting filesystem read-only\n");
+	ext3_msg(sb, KERN_CRIT,
+		"error: remounting filesystem read-only");
 	EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS;
 	sb->s_flags |= MS_RDONLY;
 	EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT;
@@ -296,7 +309,7 @@ void ext3_warning (struct super_block * sb, const char * function,
 	va_list args;
 
 	va_start(args, fmt);
-	printk(KERN_WARNING "EXT3-fs warning (device %s): %s: ",
+	printk(KERN_WARNING "EXT3-fs (%s): warning: %s: ",
 	       sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
@@ -310,10 +323,10 @@ void ext3_update_dynamic_rev(struct super_block *sb)
 	if (le32_to_cpu(es->s_rev_level) > EXT3_GOOD_OLD_REV)
 		return;
 
-	ext3_warning(sb, __func__,
-		     "updating to rev %d because of new feature flag, "
-		     "running e2fsck is recommended",
-		     EXT3_DYNAMIC_REV);
+	ext3_msg(sb, KERN_WARNING,
+		"warning: updating to rev %d because of "
+		"new feature flag, running e2fsck is recommended",
+		EXT3_DYNAMIC_REV);
 
 	es->s_first_ino = cpu_to_le32(EXT3_GOOD_OLD_FIRST_INO);
 	es->s_inode_size = cpu_to_le16(EXT3_GOOD_OLD_INODE_SIZE);
@@ -342,8 +355,9 @@ static struct block_device *ext3_blkdev_get(dev_t dev)
 	return bdev;
 
 fail:
-	printk(KERN_ERR "EXT3: failed to open journal device %s: %ld\n",
-			__bdevname(dev, b), PTR_ERR(bdev));
+	printk(KERN_ERR "EXT3-fs: failed to open journal device %s: %ld\n",
+		__bdevname(dev, b), PTR_ERR(bdev));
+
 	return NULL;
 }
 
@@ -378,13 +392,13 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi)
 {
 	struct list_head *l;
 
-	printk(KERN_ERR "sb orphan head is %d\n",
+	ext3_msg(sb, KERN_ERR, "error: sb orphan head is %d",
 	       le32_to_cpu(sbi->s_es->s_last_orphan));
 
-	printk(KERN_ERR "sb_info orphan list:\n");
+	ext3_msg(sb, KERN_ERR, "sb_info orphan list:");
 	list_for_each(l, &sbi->s_orphan) {
 		struct inode *inode = orphan_list_entry(l);
-		printk(KERN_ERR "  "
+		ext3_msg(sb, KERN_ERR, "  "
 		       "inode %s:%lu at %p: mode %o, nlink %d, next %d\n",
 		       inode->i_sb->s_id, inode->i_ino, inode,
 		       inode->i_mode, inode->i_nlink,
@@ -956,7 +970,8 @@ static int parse_options (char *options, struct super_block *sb,
 #else
 		case Opt_user_xattr:
 		case Opt_nouser_xattr:
-			printk("EXT3 (no)user_xattr options not supported\n");
+			ext3_msg(sb, KERN_INFO,
+				"(no)user_xattr options not supported");
 			break;
 #endif
 #ifdef CONFIG_EXT3_FS_POSIX_ACL
@@ -969,7 +984,8 @@ static int parse_options (char *options, struct super_block *sb,
 #else
 		case Opt_acl:
 		case Opt_noacl:
-			printk("EXT3 (no)acl options not supported\n");
+			ext3_msg(sb, KERN_INFO,
+				"(no)acl options not supported");
 			break;
 #endif
 		case Opt_reservation:
@@ -985,16 +1001,16 @@ static int parse_options (char *options, struct super_block *sb,
 			   user to specify an existing inode to be the
 			   journal file. */
 			if (is_remount) {
-				printk(KERN_ERR "EXT3-fs: cannot specify "
-				       "journal on remount\n");
+				ext3_msg(sb, KERN_ERR, "error: cannot specify "
+					"journal on remount");
 				return 0;
 			}
 			set_opt (sbi->s_mount_opt, UPDATE_JOURNAL);
 			break;
 		case Opt_journal_inum:
 			if (is_remount) {
-				printk(KERN_ERR "EXT3-fs: cannot specify "
-				       "journal on remount\n");
+				ext3_msg(sb, KERN_ERR, "error: cannot specify "
+				       "journal on remount");
 				return 0;
 			}
 			if (match_int(&args[0], &option))
@@ -1003,8 +1019,8 @@ static int parse_options (char *options, struct super_block *sb,
 			break;
 		case Opt_journal_dev:
 			if (is_remount) {
-				printk(KERN_ERR "EXT3-fs: cannot specify "
-				       "journal on remount\n");
+				ext3_msg(sb, KERN_ERR, "error: cannot specify "
+				       "journal on remount");
 				return 0;
 			}
 			if (match_int(&args[0], &option))
@@ -1036,12 +1052,11 @@ static int parse_options (char *options, struct super_block *sb,
 				if ((sbi->s_mount_opt & EXT3_MOUNT_DATA_FLAGS)
 						== data_opt)
 					break;
-				printk(KERN_ERR
-					"EXT3-fs (device %s): Cannot change "
+				ext3_msg(sb, KERN_ERR,
+					"error: cannot change "
 					"data mode on remount. The filesystem "
 					"is mounted in data=%s mode and you "
-					"try to remount it in data=%s mode.\n",
-					sb->s_id,
+					"try to remount it in data=%s mode.",
 					data_mode_string(sbi->s_mount_opt &
 							EXT3_MOUNT_DATA_FLAGS),
 					data_mode_string(data_opt));
@@ -1066,31 +1081,31 @@ static int parse_options (char *options, struct super_block *sb,
 set_qf_name:
 			if (sb_any_quota_loaded(sb) &&
 			    !sbi->s_qf_names[qtype]) {
-				printk(KERN_ERR
-					"EXT3-fs: Cannot change journaled "
-					"quota options when quota turned on.\n");
+				ext3_msg(sb, KERN_ERR,
+					"error: cannot change journaled "
+					"quota options when quota turned on.");
 				return 0;
 			}
 			qname = match_strdup(&args[0]);
 			if (!qname) {
-				printk(KERN_ERR
-					"EXT3-fs: not enough memory for "
-					"storing quotafile name.\n");
+				ext3_msg(sb, KERN_ERR,
+					"error: not enough memory for "
+					"storing quotafile name.");
 				return 0;
 			}
 			if (sbi->s_qf_names[qtype] &&
 			    strcmp(sbi->s_qf_names[qtype], qname)) {
-				printk(KERN_ERR
-					"EXT3-fs: %s quota file already "
-					"specified.\n", QTYPE2NAME(qtype));
+				ext3_msg(sb, KERN_ERR,
+					"error: %s quota file already "
+					"specified.", QTYPE2NAME(qtype));
 				kfree(qname);
 				return 0;
 			}
 			sbi->s_qf_names[qtype] = qname;
 			if (strchr(sbi->s_qf_names[qtype], '/')) {
-				printk(KERN_ERR
-					"EXT3-fs: quotafile must be on "
-					"filesystem root.\n");
+				ext3_msg(sb, KERN_ERR,
+					"error: quotafile must be on "
+					"filesystem root.");
 				kfree(sbi->s_qf_names[qtype]);
 				sbi->s_qf_names[qtype] = NULL;
 				return 0;
@@ -1105,9 +1120,9 @@ set_qf_name:
 clear_qf_name:
 			if (sb_any_quota_loaded(sb) &&
 			    sbi->s_qf_names[qtype]) {
-				printk(KERN_ERR "EXT3-fs: Cannot change "
+				ext3_msg(sb, KERN_ERR, "error: cannot change "
 					"journaled quota options when "
-					"quota turned on.\n");
+					"quota turned on.");
 				return 0;
 			}
 			/*
@@ -1124,9 +1139,9 @@ clear_qf_name:
 set_qf_format:
 			if (sb_any_quota_loaded(sb) &&
 			    sbi->s_jquota_fmt != qfmt) {
-				printk(KERN_ERR "EXT3-fs: Cannot change "
+				ext3_msg(sb, KERN_ERR, "error: cannot change "
 					"journaled quota options when "
-					"quota turned on.\n");
+					"quota turned on.");
 				return 0;
 			}
 			sbi->s_jquota_fmt = qfmt;
@@ -1142,8 +1157,8 @@ set_qf_format:
 			break;
 		case Opt_noquota:
 			if (sb_any_quota_loaded(sb)) {
-				printk(KERN_ERR "EXT3-fs: Cannot change quota "
-					"options when quota turned on.\n");
+				ext3_msg(sb, KERN_ERR, "error: cannot change "
+					"quota options when quota turned on.");
 				return 0;
 			}
 			clear_opt(sbi->s_mount_opt, QUOTA);
@@ -1154,8 +1169,8 @@ set_qf_format:
 		case Opt_quota:
 		case Opt_usrquota:
 		case Opt_grpquota:
-			printk(KERN_ERR
-				"EXT3-fs: quota options not supported.\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: quota options not supported.");
 			break;
 		case Opt_usrjquota:
 		case Opt_grpjquota:
@@ -1163,9 +1178,9 @@ set_qf_format:
 		case Opt_offgrpjquota:
 		case Opt_jqfmt_vfsold:
 		case Opt_jqfmt_vfsv0:
-			printk(KERN_ERR
-				"EXT3-fs: journaled quota options not "
-				"supported.\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: journaled quota options not "
+				"supported.");
 			break;
 		case Opt_noquota:
 			break;
@@ -1185,8 +1200,9 @@ set_qf_format:
 			break;
 		case Opt_resize:
 			if (!is_remount) {
-				printk("EXT3-fs: resize option only available "
-					"for remount\n");
+				ext3_msg(sb, KERN_ERR,
+					"error: resize option only available "
+					"for remount");
 				return 0;
 			}
 			if (match_int(&args[0], &option) != 0)
@@ -1200,9 +1216,9 @@ set_qf_format:
 			clear_opt(sbi->s_mount_opt, NOBH);
 			break;
 		default:
-			printk (KERN_ERR
-				"EXT3-fs: Unrecognized mount option \"%s\" "
-				"or missing value\n", p);
+			ext3_msg(sb, KERN_ERR,
+				"error: unrecognized mount option \"%s\" "
+				"or missing valuen", p);
 			return 0;
 		}
 	}
@@ -1220,21 +1236,21 @@ set_qf_format:
 				(sbi->s_mount_opt & EXT3_MOUNT_GRPQUOTA)) ||
 		    (sbi->s_qf_names[GRPQUOTA] &&
 				(sbi->s_mount_opt & EXT3_MOUNT_USRQUOTA))) {
-			printk(KERN_ERR "EXT3-fs: old and new quota "
-					"format mixing.\n");
+			ext3_msg(sb, KERN_ERR, "error: old and new quota "
+					"format mixing.");
 			return 0;
 		}
 
 		if (!sbi->s_jquota_fmt) {
-			printk(KERN_ERR "EXT3-fs: journaled quota format "
-					"not specified.\n");
+			ext3_msg(sb, KERN_ERR, "error: journaled quota format "
+					"not specified.");
 			return 0;
 		}
 	} else {
 		if (sbi->s_jquota_fmt) {
-			printk(KERN_ERR "EXT3-fs: journaled quota format "
+			ext3_msg(sb, KERN_ERR, "error: journaled quota format "
 					"specified with no journaling "
-					"enabled.\n");
+					"enabled.");
 			return 0;
 		}
 	}
@@ -1249,31 +1265,33 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
 	int res = 0;
 
 	if (le32_to_cpu(es->s_rev_level) > EXT3_MAX_SUPP_REV) {
-		printk (KERN_ERR "EXT3-fs warning: revision level too high, "
-			"forcing read-only mode\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: revision level too high, "
+			"forcing read-only mode");
 		res = MS_RDONLY;
 	}
 	if (read_only)
 		return res;
 	if (!(sbi->s_mount_state & EXT3_VALID_FS))
-		printk (KERN_WARNING "EXT3-fs warning: mounting unchecked fs, "
-			"running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: mounting unchecked fs, "
+			"running e2fsck is recommended");
 	else if ((sbi->s_mount_state & EXT3_ERROR_FS))
-		printk (KERN_WARNING
-			"EXT3-fs warning: mounting fs with errors, "
-			"running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: mounting fs with errors, "
+			"running e2fsck is recommended");
 	else if ((__s16) le16_to_cpu(es->s_max_mnt_count) >= 0 &&
 		 le16_to_cpu(es->s_mnt_count) >=
 		 (unsigned short) (__s16) le16_to_cpu(es->s_max_mnt_count))
-		printk (KERN_WARNING
-			"EXT3-fs warning: maximal mount count reached, "
-			"running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: maximal mount count reached, "
+			"running e2fsck is recommended");
 	else if (le32_to_cpu(es->s_checkinterval) &&
 		(le32_to_cpu(es->s_lastcheck) +
 			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
-		printk (KERN_WARNING
-			"EXT3-fs warning: checktime reached, "
-			"running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: checktime reached, "
+			"running e2fsck is recommended");
 #if 0
 		/* @@@ We _will_ want to clear the valid bit if we find
                    inconsistencies, to force a fsck at reboot.  But for
@@ -1290,22 +1308,20 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
 
 	ext3_commit_super(sb, es, 1);
 	if (test_opt(sb, DEBUG))
-		printk(KERN_INFO "[EXT3 FS bs=%lu, gc=%lu, "
-				"bpg=%lu, ipg=%lu, mo=%04lx]\n",
+		ext3_msg(sb, KERN_INFO, "[bs=%lu, gc=%lu, "
+				"bpg=%lu, ipg=%lu, mo=%04lx]",
 			sb->s_blocksize,
 			sbi->s_groups_count,
 			EXT3_BLOCKS_PER_GROUP(sb),
 			EXT3_INODES_PER_GROUP(sb),
 			sbi->s_mount_opt);
 
-	printk(KERN_INFO "EXT3 FS on %s, ", sb->s_id);
 	if (EXT3_SB(sb)->s_journal->j_inode == NULL) {
 		char b[BDEVNAME_SIZE];
-
-		printk("external journal on %s\n",
+		ext3_msg(sb, KERN_INFO, "using externa journal on %s",
 			bdevname(EXT3_SB(sb)->s_journal->j_dev, b));
 	} else {
-		printk("internal journal\n");
+		ext3_msg(sb, KERN_INFO, "using internal journaln");
 	}
 	return res;
 }
@@ -1399,8 +1415,8 @@ static void ext3_orphan_cleanup (struct super_block * sb,
 	}
 
 	if (bdev_read_only(sb->s_bdev)) {
-		printk(KERN_ERR "EXT3-fs: write access "
-			"unavailable, skipping orphan cleanup.\n");
+		ext3_msg(sb, KERN_ERR, "error: write access "
+			"unavailable, skipping orphan cleanup.");
 		return;
 	}
 
@@ -1414,8 +1430,7 @@ static void ext3_orphan_cleanup (struct super_block * sb,
 	}
 
 	if (s_flags & MS_RDONLY) {
-		printk(KERN_INFO "EXT3-fs: %s: orphan cleanup on readonly fs\n",
-		       sb->s_id);
+		ext3_msg(sb, KERN_INFO, "orphan cleanup on readonly fs");
 		sb->s_flags &= ~MS_RDONLY;
 	}
 #ifdef CONFIG_QUOTA
@@ -1426,9 +1441,9 @@ static void ext3_orphan_cleanup (struct super_block * sb,
 		if (EXT3_SB(sb)->s_qf_names[i]) {
 			int ret = ext3_quota_on_mount(sb, i);
 			if (ret < 0)
-				printk(KERN_ERR
-					"EXT3-fs: Cannot turn on journaled "
-					"quota: error %d\n", ret);
+				ext3_msg(sb, KERN_ERR,
+					"error: cannot turn on journaled "
+					"quota: %d", ret);
 		}
 	}
 #endif
@@ -1466,11 +1481,11 @@ static void ext3_orphan_cleanup (struct super_block * sb,
 #define PLURAL(x) (x), ((x)==1) ? "" : "s"
 
 	if (nr_orphans)
-		printk(KERN_INFO "EXT3-fs: %s: %d orphan inode%s deleted\n",
-		       sb->s_id, PLURAL(nr_orphans));
+		ext3_msg(sb, KERN_INFO, "%d orphan inode%s deleted",
+		       PLURAL(nr_orphans));
 	if (nr_truncates)
-		printk(KERN_INFO "EXT3-fs: %s: %d truncate%s cleaned up\n",
-		       sb->s_id, PLURAL(nr_truncates));
+		ext3_msg(sb, KERN_INFO, "%d truncate%s cleaned up",
+		       PLURAL(nr_truncates));
 #ifdef CONFIG_QUOTA
 	/* Turn quotas off */
 	for (i = 0; i < MAXQUOTAS; i++) {
@@ -1590,7 +1605,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 
 	blocksize = sb_min_blocksize(sb, EXT3_MIN_BLOCK_SIZE);
 	if (!blocksize) {
-		printk(KERN_ERR "EXT3-fs: unable to set blocksize\n");
+		ext3_msg(sb, KERN_ERR, "error: unable to set blocksize");
 		goto out_fail;
 	}
 
@@ -1606,7 +1621,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	}
 
 	if (!(bh = sb_bread(sb, logic_sb_block))) {
-		printk (KERN_ERR "EXT3-fs: unable to read superblock\n");
+		ext3_msg(sb, KERN_ERR, "error: unable to read superblock");
 		goto out_fail;
 	}
 	/*
@@ -1665,9 +1680,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	    (EXT3_HAS_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U)))
-		printk(KERN_WARNING
-		       "EXT3-fs warning: feature flags set on rev 0 fs, "
-		       "running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: feature flags set on rev 0 fs, "
+			"running e2fsck is recommended");
 	/*
 	 * Check feature flags regardless of the revision level, since we
 	 * previously didn't change the revision level when setting the flags,
@@ -1675,25 +1690,25 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	 */
 	features = EXT3_HAS_INCOMPAT_FEATURE(sb, ~EXT3_FEATURE_INCOMPAT_SUPP);
 	if (features) {
-		printk(KERN_ERR "EXT3-fs: %s: couldn't mount because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext3_msg(sb, KERN_ERR,
+			"error: couldn't mount because of unsupported "
+			"optional features (%x)", le32_to_cpu(features));
 		goto failed_mount;
 	}
 	features = EXT3_HAS_RO_COMPAT_FEATURE(sb, ~EXT3_FEATURE_RO_COMPAT_SUPP);
 	if (!(sb->s_flags & MS_RDONLY) && features) {
-		printk(KERN_ERR "EXT3-fs: %s: couldn't mount RDWR because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext3_msg(sb, KERN_ERR,
+			"error: couldn't mount RDWR because of unsupported "
+			"optional features (%x)", le32_to_cpu(features));
 		goto failed_mount;
 	}
 	blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size);
 
 	if (blocksize < EXT3_MIN_BLOCK_SIZE ||
 	    blocksize > EXT3_MAX_BLOCK_SIZE) {
-		printk(KERN_ERR
-		       "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n",
-		       blocksize, sb->s_id);
+		ext3_msg(sb, KERN_ERR,
+			"error: couldn't mount because of unsupported "
+			"filesystem blocksize %d", blocksize);
 		goto failed_mount;
 	}
 
@@ -1704,30 +1719,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 		 * than the hardware sectorsize for the machine.
 		 */
 		if (blocksize < hblock) {
-			printk(KERN_ERR "EXT3-fs: blocksize %d too small for "
-			       "device blocksize %d.\n", blocksize, hblock);
+			ext3_msg(sb, KERN_ERR,
+				"error: fsblocksize %d too small for "
+				"hardware sectorsize %d", blocksize, hblock);
 			goto failed_mount;
 		}
 
 		brelse (bh);
 		if (!sb_set_blocksize(sb, blocksize)) {
-			printk(KERN_ERR "EXT3-fs: bad blocksize %d.\n",
-				blocksize);
+			ext3_msg(sb, KERN_ERR,
+				"error: bad blocksize %d", blocksize);
 			goto out_fail;
 		}
 		logic_sb_block = (sb_block * EXT3_MIN_BLOCK_SIZE) / blocksize;
 		offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize;
 		bh = sb_bread(sb, logic_sb_block);
 		if (!bh) {
-			printk(KERN_ERR
-			       "EXT3-fs: Can't read superblock on 2nd try.\n");
+			ext3_msg(sb, KERN_ERR,
+			       "error: can't read superblock on 2nd try");
 			goto failed_mount;
 		}
 		es = (struct ext3_super_block *)(((char *)bh->b_data) + offset);
 		sbi->s_es = es;
 		if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) {
-			printk (KERN_ERR
-				"EXT3-fs: Magic mismatch, very weird !\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: magic mismatch");
 			goto failed_mount;
 		}
 	}
@@ -1743,8 +1759,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 		if ((sbi->s_inode_size < EXT3_GOOD_OLD_INODE_SIZE) ||
 		    (!is_power_of_2(sbi->s_inode_size)) ||
 		    (sbi->s_inode_size > blocksize)) {
-			printk (KERN_ERR
-				"EXT3-fs: unsupported inode size: %d\n",
+			ext3_msg(sb, KERN_ERR,
+				"error: unsupported inode size: %d",
 				sbi->s_inode_size);
 			goto failed_mount;
 		}
@@ -1752,8 +1768,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	sbi->s_frag_size = EXT3_MIN_FRAG_SIZE <<
 				   le32_to_cpu(es->s_log_frag_size);
 	if (blocksize != sbi->s_frag_size) {
-		printk(KERN_ERR
-		       "EXT3-fs: fragsize %lu != blocksize %u (unsupported)\n",
+		ext3_msg(sb, KERN_ERR,
+		       "error: fragsize %lu != blocksize %u (unsupported)",
 		       sbi->s_frag_size, blocksize);
 		goto failed_mount;
 	}
@@ -1789,31 +1805,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	}
 
 	if (sbi->s_blocks_per_group > blocksize * 8) {
-		printk (KERN_ERR
-			"EXT3-fs: #blocks per group too big: %lu\n",
+		ext3_msg(sb, KERN_ERR,
+			"#blocks per group too big: %lu",
 			sbi->s_blocks_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_frags_per_group > blocksize * 8) {
-		printk (KERN_ERR
-			"EXT3-fs: #fragments per group too big: %lu\n",
+		ext3_msg(sb, KERN_ERR,
+			"error: #fragments per group too big: %lu",
 			sbi->s_frags_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_inodes_per_group > blocksize * 8) {
-		printk (KERN_ERR
-			"EXT3-fs: #inodes per group too big: %lu\n",
+		ext3_msg(sb, KERN_ERR,
+			"error: #inodes per group too big: %lu",
 			sbi->s_inodes_per_group);
 		goto failed_mount;
 	}
 
 	if (le32_to_cpu(es->s_blocks_count) >
 		    (sector_t)(~0ULL) >> (sb->s_blocksize_bits - 9)) {
-		printk(KERN_ERR "EXT3-fs: filesystem on %s:"
-			" too large to mount safely\n", sb->s_id);
+		ext3_msg(sb, KERN_ERR,
+			"error: filesystem is too large to mount safely");
 		if (sizeof(sector_t) < 8)
-			printk(KERN_WARNING "EXT3-fs: CONFIG_LBDAF not "
-					"enabled\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: CONFIG_LBDAF not enabled");
 		goto failed_mount;
 	}
 
@@ -1827,7 +1843,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *),
 				    GFP_KERNEL);
 	if (sbi->s_group_desc == NULL) {
-		printk (KERN_ERR "EXT3-fs: not enough memory\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: not enough memory");
 		goto failed_mount;
 	}
 
@@ -1837,14 +1854,15 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 		block = descriptor_loc(sb, logic_sb_block, i);
 		sbi->s_group_desc[i] = sb_bread(sb, block);
 		if (!sbi->s_group_desc[i]) {
-			printk (KERN_ERR "EXT3-fs: "
-				"can't read group descriptor %d\n", i);
+			ext3_msg(sb, KERN_ERR,
+				"error: can't read group descriptor %d", i);
 			db_count = i;
 			goto failed_mount2;
 		}
 	}
 	if (!ext3_check_descriptors (sb)) {
-		printk(KERN_ERR "EXT3-fs: group descriptors corrupted!\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: group descriptors corrupted");
 		goto failed_mount2;
 	}
 	sbi->s_gdb_count = db_count;
@@ -1862,7 +1880,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 				ext3_count_dirs(sb));
 	}
 	if (err) {
-		printk(KERN_ERR "EXT3-fs: insufficient memory\n");
+		ext3_msg(sb, KERN_ERR, "error: insufficient memory");
 		goto failed_mount3;
 	}
 
@@ -1910,9 +1928,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 			goto failed_mount3;
 	} else {
 		if (!silent)
-			printk (KERN_ERR
-				"ext3: No journal on filesystem on %s\n",
-				sb->s_id);
+			ext3_msg(sb, KERN_ERR,
+				"error: no journal found. "
+				"mounting ext3 over ext2?");
 		goto failed_mount3;
 	}
 
@@ -1934,8 +1952,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	case EXT3_MOUNT_WRITEBACK_DATA:
 		if (!journal_check_available_features
 		    (sbi->s_journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)) {
-			printk(KERN_ERR "EXT3-fs: Journal does not support "
-			       "requested data journaling mode\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: journal does not support "
+				"requested data journaling mode");
 			goto failed_mount4;
 		}
 	default:
@@ -1944,8 +1963,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 
 	if (test_opt(sb, NOBH)) {
 		if (!(test_opt(sb, DATA_FLAGS) == EXT3_MOUNT_WRITEBACK_DATA)) {
-			printk(KERN_WARNING "EXT3-fs: Ignoring nobh option - "
-				"its supported only with writeback mode\n");
+			ext3_msg(sb, KERN_WARNING,
+				"warning: ignoring nobh option - "
+				"its supported only with writeback mode");
 			clear_opt(sbi->s_mount_opt, NOBH);
 		}
 	}
@@ -1956,18 +1976,18 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 
 	root = ext3_iget(sb, EXT3_ROOT_INO);
 	if (IS_ERR(root)) {
-		printk(KERN_ERR "EXT3-fs: get root inode failed\n");
+		ext3_msg(sb, KERN_ERR, "error: get root inode failed");
 		ret = PTR_ERR(root);
 		goto failed_mount4;
 	}
 	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
 		iput(root);
-		printk(KERN_ERR "EXT3-fs: corrupt root inode, run e2fsck\n");
+		ext3_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
 		goto failed_mount4;
 	}
 	sb->s_root = d_alloc_root(root);
 	if (!sb->s_root) {
-		printk(KERN_ERR "EXT3-fs: get root dentry failed\n");
+		ext3_msg(sb, KERN_ERR, "error: get root dentry failed");
 		iput(root);
 		ret = -ENOMEM;
 		goto failed_mount4;
@@ -1986,9 +2006,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	ext3_orphan_cleanup(sb, es);
 	EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
 	if (needs_recovery)
-		printk (KERN_INFO "EXT3-fs: recovery complete.\n");
+		ext3_msg(sb, KERN_INFO, "recovery complete");
 	ext3_mark_recovery_complete(sb, es);
-	printk (KERN_INFO "EXT3-fs: mounted filesystem with %s data mode.\n",
+	ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
 		test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
 		test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
 		"writeback");
@@ -1998,7 +2018,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 
 cantfind_ext3:
 	if (!silent)
-		printk(KERN_ERR "VFS: Can't find ext3 filesystem on dev %s.\n",
+		ext3_msg(sb, KERN_INFO,
+			"error: can't find ext3 filesystem on dev %s.",
 		       sb->s_id);
 	goto failed_mount;
 
@@ -2066,27 +2087,27 @@ static journal_t *ext3_get_journal(struct super_block *sb,
 
 	journal_inode = ext3_iget(sb, journal_inum);
 	if (IS_ERR(journal_inode)) {
-		printk(KERN_ERR "EXT3-fs: no journal found.\n");
+		ext3_msg(sb, KERN_ERR, "error: no journal found");
 		return NULL;
 	}
 	if (!journal_inode->i_nlink) {
 		make_bad_inode(journal_inode);
 		iput(journal_inode);
-		printk(KERN_ERR "EXT3-fs: journal inode is deleted.\n");
+		ext3_msg(sb, KERN_ERR, "error: journal inode is deleted");
 		return NULL;
 	}
 
 	jbd_debug(2, "Journal inode found at %p: %Ld bytes\n",
 		  journal_inode, journal_inode->i_size);
 	if (!S_ISREG(journal_inode->i_mode)) {
-		printk(KERN_ERR "EXT3-fs: invalid journal inode.\n");
+		ext3_msg(sb, KERN_ERR, "error: invalid journal inode");
 		iput(journal_inode);
 		return NULL;
 	}
 
 	journal = journal_init_inode(journal_inode);
 	if (!journal) {
-		printk(KERN_ERR "EXT3-fs: Could not load journal inode\n");
+		ext3_msg(sb, KERN_ERR, "error: could not load journal inode");
 		iput(journal_inode);
 		return NULL;
 	}
@@ -2113,8 +2134,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 		return NULL;
 
 	if (bd_claim(bdev, sb)) {
-		printk(KERN_ERR
-		        "EXT3: failed to claim external journal device.\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: failed to claim external journal device");
 		blkdev_put(bdev, FMODE_READ|FMODE_WRITE);
 		return NULL;
 	}
@@ -2122,8 +2143,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	blocksize = sb->s_blocksize;
 	hblock = bdev_logical_block_size(bdev);
 	if (blocksize < hblock) {
-		printk(KERN_ERR
-			"EXT3-fs: blocksize too small for journal device.\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: blocksize too small for journal device");
 		goto out_bdev;
 	}
 
@@ -2131,8 +2152,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	offset = EXT3_MIN_BLOCK_SIZE % blocksize;
 	set_blocksize(bdev, blocksize);
 	if (!(bh = __bread(bdev, sb_block, blocksize))) {
-		printk(KERN_ERR "EXT3-fs: couldn't read superblock of "
-		       "external journal\n");
+		ext3_msg(sb, KERN_ERR, "error: couldn't read superblock of "
+			"external journal");
 		goto out_bdev;
 	}
 
@@ -2140,14 +2161,14 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	if ((le16_to_cpu(es->s_magic) != EXT3_SUPER_MAGIC) ||
 	    !(le32_to_cpu(es->s_feature_incompat) &
 	      EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)) {
-		printk(KERN_ERR "EXT3-fs: external journal has "
-					"bad superblock\n");
+		ext3_msg(sb, KERN_ERR, "error: external journal has "
+			"bad superblock");
 		brelse(bh);
 		goto out_bdev;
 	}
 
 	if (memcmp(EXT3_SB(sb)->s_es->s_journal_uuid, es->s_uuid, 16)) {
-		printk(KERN_ERR "EXT3-fs: journal UUID does not match\n");
+		ext3_msg(sb, KERN_ERR, "error: journal UUID does not match");
 		brelse(bh);
 		goto out_bdev;
 	}
@@ -2159,19 +2180,21 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	journal = journal_init_dev(bdev, sb->s_bdev,
 					start, len, blocksize);
 	if (!journal) {
-		printk(KERN_ERR "EXT3-fs: failed to create device journal\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: failed to create device journal");
 		goto out_bdev;
 	}
 	journal->j_private = sb;
 	ll_rw_block(READ, 1, &journal->j_sb_buffer);
 	wait_on_buffer(journal->j_sb_buffer);
 	if (!buffer_uptodate(journal->j_sb_buffer)) {
-		printk(KERN_ERR "EXT3-fs: I/O error on journal device\n");
+		ext3_msg(sb, KERN_ERR, "I/O error on journal device");
 		goto out_journal;
 	}
 	if (be32_to_cpu(journal->j_superblock->s_nr_users) != 1) {
-		printk(KERN_ERR "EXT3-fs: External journal has more than one "
-					"user (unsupported) - %d\n",
+		ext3_msg(sb, KERN_ERR,
+			"error: external journal has more than one "
+			"user (unsupported) - %d",
 			be32_to_cpu(journal->j_superblock->s_nr_users));
 		goto out_journal;
 	}
@@ -2197,8 +2220,8 @@ static int ext3_load_journal(struct super_block *sb,
 
 	if (journal_devnum &&
 	    journal_devnum != le32_to_cpu(es->s_journal_dev)) {
-		printk(KERN_INFO "EXT3-fs: external journal device major/minor "
-			"numbers have changed\n");
+		ext3_msg(sb, KERN_INFO, "external journal device major/minor "
+			"numbers have changed");
 		journal_dev = new_decode_dev(journal_devnum);
 	} else
 		journal_dev = new_decode_dev(le32_to_cpu(es->s_journal_dev));
@@ -2213,21 +2236,21 @@ static int ext3_load_journal(struct super_block *sb,
 
 	if (EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_RECOVER)) {
 		if (sb->s_flags & MS_RDONLY) {
-			printk(KERN_INFO "EXT3-fs: INFO: recovery "
-					"required on readonly filesystem.\n");
+			ext3_msg(sb, KERN_INFO,
+				"recovery required on readonly filesystem");
 			if (really_read_only) {
-				printk(KERN_ERR "EXT3-fs: write access "
-					"unavailable, cannot proceed.\n");
+				ext3_msg(sb, KERN_ERR, "error: write access "
+					"unavailable, cannot proceed");
 				return -EROFS;
 			}
-			printk (KERN_INFO "EXT3-fs: write access will "
-					"be enabled during recovery.\n");
+			ext3_msg(sb, KERN_INFO,
+				"write access will be enabled during recovery");
 		}
 	}
 
 	if (journal_inum && journal_dev) {
-		printk(KERN_ERR "EXT3-fs: filesystem has both journal "
-		       "and inode journals!\n");
+		ext3_msg(sb, KERN_ERR, "error: filesystem has both journal "
+		       "and inode journals");
 		return -EINVAL;
 	}
 
@@ -2242,7 +2265,7 @@ static int ext3_load_journal(struct super_block *sb,
 	if (!really_read_only && test_opt(sb, UPDATE_JOURNAL)) {
 		err = journal_update_format(journal);
 		if (err)  {
-			printk(KERN_ERR "EXT3-fs: error updating journal.\n");
+			ext3_msg(sb, KERN_ERR, "error updating journal");
 			journal_destroy(journal);
 			return err;
 		}
@@ -2254,7 +2277,7 @@ static int ext3_load_journal(struct super_block *sb,
 		err = journal_load(journal);
 
 	if (err) {
-		printk(KERN_ERR "EXT3-fs: error loading journal.\n");
+		ext3_msg(sb, KERN_ERR, "error loading journal");
 		journal_destroy(journal);
 		return err;
 	}
@@ -2273,16 +2296,17 @@ static int ext3_load_journal(struct super_block *sb,
 	return 0;
 }
 
-static int ext3_create_journal(struct super_block * sb,
-			       struct ext3_super_block * es,
+static int ext3_create_journal(struct super_block *sb,
+			       struct ext3_super_block *es,
 			       unsigned int journal_inum)
 {
 	journal_t *journal;
 	int err;
 
 	if (sb->s_flags & MS_RDONLY) {
-		printk(KERN_ERR "EXT3-fs: readonly filesystem when trying to "
-				"create journal.\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: readonly filesystem when trying to "
+			"create journal");
 		return -EROFS;
 	}
 
@@ -2290,12 +2314,12 @@ static int ext3_create_journal(struct super_block * sb,
 	if (!journal)
 		return -EINVAL;
 
-	printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n",
+	ext3_msg(sb, KERN_INFO, "creating new journal on inode %u",
 	       journal_inum);
 
 	err = journal_create(journal);
 	if (err) {
-		printk(KERN_ERR "EXT3-fs: error creating journal.\n");
+		ext3_msg(sb, KERN_ERR, "error creating journal");
 		journal_destroy(journal);
 		return -EIO;
 	}
@@ -2376,8 +2400,8 @@ out:
  * has recorded an error from a previous lifetime, move that error to the
  * main filesystem now.
  */
-static void ext3_clear_journal_err(struct super_block * sb,
-				   struct ext3_super_block * es)
+static void ext3_clear_journal_err(struct super_block *sb,
+				   struct ext3_super_block *es)
 {
 	journal_t *journal;
 	int j_errno;
@@ -2568,10 +2592,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
 			__le32 ret;
 			if ((ret = EXT3_HAS_RO_COMPAT_FEATURE(sb,
 					~EXT3_FEATURE_RO_COMPAT_SUPP))) {
-				printk(KERN_WARNING "EXT3-fs: %s: couldn't "
-				       "remount RDWR because of unsupported "
-				       "optional features (%x).\n",
-				       sb->s_id, le32_to_cpu(ret));
+				ext3_msg(sb, KERN_WARNING,
+					"warning: couldn't remount RDWR "
+					"because of unsupported optional "
+					"features (%x)", le32_to_cpu(ret));
 				err = -EROFS;
 				goto restore_opts;
 			}
@@ -2582,11 +2606,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
 			 * require a full umount/remount for now.
 			 */
 			if (es->s_last_orphan) {
-				printk(KERN_WARNING "EXT3-fs: %s: couldn't "
+				ext3_msg(sb, KERN_WARNING, "warning: couldn't "
 				       "remount RDWR because of unprocessed "
 				       "orphan inode list.  Please "
-				       "umount/remount instead.\n",
-				       sb->s_id);
+				       "umount/remount instead.");
 				err = -EINVAL;
 				goto restore_opts;
 			}
@@ -2837,9 +2860,9 @@ static int ext3_quota_on(struct super_block *sb, int type, int format_id,
 	if (EXT3_SB(sb)->s_qf_names[type]) {
 		/* Quotafile not of fs root? */
 		if (path.dentry->d_parent != sb->s_root)
-			printk(KERN_WARNING
-				"EXT3-fs: Quota file not on filesystem root. "
-				"Journaled quota will not work.\n");
+			ext3_msg(sb, KERN_WARNING,
+				"warning: Quota file not on filesystem root. "
+				"Journaled quota will not work.");
 	}
 
 	/*
@@ -2921,8 +2944,9 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
 	handle_t *handle = journal_current_handle();
 
 	if (!handle) {
-		printk(KERN_WARNING "EXT3-fs: Quota write (off=%Lu, len=%Lu)"
-			" cancelled because transaction is not started.\n",
+		ext3_msg(sb, KERN_WARNING,
+			"warning: quota write (off=%llu, len=%llu)"
+			" cancelled because transaction is not started.",
 			(unsigned long long)off, (unsigned long long)len);
 		return -EIO;
 	}
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v1] Unify log messages in ext3
  2009-11-21 10:25 [PATCH v1] Unify log messages in ext3 Alexey Fisher
@ 2009-11-21 23:55 ` Eric Sandeen
  2009-11-22 19:12   ` Alexey Fisher
  2009-11-22 19:38   ` [PATCH v2] " Alexey Fisher
  0 siblings, 2 replies; 11+ messages in thread
From: Eric Sandeen @ 2009-11-21 23:55 UTC (permalink / raw)
  To: Alexey Fisher; +Cc: Jan Kara, Andreas Dilger, linux-ext4, Theodore Tso

Alexey Fisher wrote:
> make messages produced by ext3 more unified. It should be
> easy to parse.

Didn't Andi Kleen send this change already way back on 4/26/09?

[PATCH] EXT3: Change all super.c messages to print the device

Not sure what happened to it ...

-Eric

> dmesg before patch:
> [ 4893.684892] reservations ON
> [ 4893.684896] xip option not supported
> [ 4893.684964] EXT3-fs warning: maximal mount count reached, running
> e2fsck is recommended
> 
> dmesg after patch:
> [  873.300792] EXT3-fs (loop0): using internal journaln
> [  873.300796] EXT3-fs (loop0): mounted filesystem with writeback data mode
> [  924.163657] EXT3-fs (loop0): error: can't find ext3 filesystem on dev loop0.
> [  723.755642] EXT3-fs (loop0): error: bad blocksize 8192
> [  357.874687] EXT3-fs (loop0): error: no journal found. mounting ext3 over ext2?
> [  873.300764] EXT3-fs (loop0): warning: maximal mount count reached, running e2fsck is recommended
> [  924.163657] EXT3-fs (loop0): error: can't find ext3 filesystem on dev loop0.
> 
> Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
> ---
>  fs/ext3/super.c |  422 +++++++++++++++++++++++++++++--------------------------
>  1 files changed, 223 insertions(+), 199 deletions(-)
> 
> diff --git a/fs/ext3/super.c b/fs/ext3/super.c
> index 427496c..9931464 100644
> --- a/fs/ext3/super.c
> +++ b/fs/ext3/super.c
> @@ -135,12 +135,24 @@ void ext3_journal_abort_handle(const char *caller, const char *err_fn,
>  	if (is_handle_aborted(handle))
>  		return;
>  
> -	printk(KERN_ERR "%s: aborting transaction: %s in %s\n",
> -	       caller, errstr, err_fn);
> +	printk(KERN_ERR "EXT3-fs: %s: aborting transaction: %s in %s\n",
> +		caller, errstr, err_fn);
>  
>  	journal_abort_handle(handle);
>  }
>  
> +void ext3_msg(struct super_block *sb, const char *prefix,
> +		const char *fmt, ...)
> +{
> +	va_list args;
> +
> +	va_start(args, fmt);
> +	printk("%sEXT3-fs (%s): ", prefix, sb->s_id);
> +	vprintk(fmt, args);
> +	printk("\n");
> +	va_end(args);
> +}
> +
>  /* Deal with the reporting of failure conditions on a filesystem such as
>   * inconsistencies detected or read IO failures.
>   *
> @@ -174,12 +186,13 @@ static void ext3_handle_error(struct super_block *sb)
>  			journal_abort(journal, -EIO);
>  	}
>  	if (test_opt (sb, ERRORS_RO)) {
> -		printk (KERN_CRIT "Remounting filesystem read-only\n");
> +		ext3_msg(sb, KERN_CRIT,
> +			"error: remounting filesystem read-only");
>  		sb->s_flags |= MS_RDONLY;
>  	}
>  	ext3_commit_super(sb, es, 1);
>  	if (test_opt(sb, ERRORS_PANIC))
> -		panic("EXT3-fs (device %s): panic forced after error\n",
> +		panic("EXT3-fs (%s): panic forced after error\n",
>  			sb->s_id);
>  }
>  
> @@ -247,8 +260,7 @@ void __ext3_std_error (struct super_block * sb, const char * function,
>  		return;
>  
>  	errstr = ext3_decode_error(sb, errno, nbuf);
> -	printk (KERN_CRIT "EXT3-fs error (device %s) in %s: %s\n",
> -		sb->s_id, function, errstr);
> +	ext3_msg(sb, KERN_CRIT, "error in %s: %s", function, errstr);
>  
>  	ext3_handle_error(sb);
>  }
> @@ -268,21 +280,22 @@ void ext3_abort (struct super_block * sb, const char * function,
>  {
>  	va_list args;
>  
> -	printk (KERN_CRIT "ext3_abort called.\n");
> +	ext3_msg(sb, KERN_CRIT, "ext3_abort called");
>  
>  	va_start(args, fmt);
> -	printk(KERN_CRIT "EXT3-fs error (device %s): %s: ",sb->s_id, function);
> +	printk(KERN_CRIT "EXT3-fs (%s): error: %s: ", sb->s_id, function);
>  	vprintk(fmt, args);
>  	printk("\n");
>  	va_end(args);
>  
>  	if (test_opt(sb, ERRORS_PANIC))
> -		panic("EXT3-fs panic from previous error\n");
> +		panic("EXT3-fs: panic from previous error\n");
>  
>  	if (sb->s_flags & MS_RDONLY)
>  		return;
>  
> -	printk(KERN_CRIT "Remounting filesystem read-only\n");
> +	ext3_msg(sb, KERN_CRIT,
> +		"error: remounting filesystem read-only");
>  	EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS;
>  	sb->s_flags |= MS_RDONLY;
>  	EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT;
> @@ -296,7 +309,7 @@ void ext3_warning (struct super_block * sb, const char * function,
>  	va_list args;
>  
>  	va_start(args, fmt);
> -	printk(KERN_WARNING "EXT3-fs warning (device %s): %s: ",
> +	printk(KERN_WARNING "EXT3-fs (%s): warning: %s: ",
>  	       sb->s_id, function);
>  	vprintk(fmt, args);
>  	printk("\n");
> @@ -310,10 +323,10 @@ void ext3_update_dynamic_rev(struct super_block *sb)
>  	if (le32_to_cpu(es->s_rev_level) > EXT3_GOOD_OLD_REV)
>  		return;
>  
> -	ext3_warning(sb, __func__,
> -		     "updating to rev %d because of new feature flag, "
> -		     "running e2fsck is recommended",
> -		     EXT3_DYNAMIC_REV);
> +	ext3_msg(sb, KERN_WARNING,
> +		"warning: updating to rev %d because of "
> +		"new feature flag, running e2fsck is recommended",
> +		EXT3_DYNAMIC_REV);
>  
>  	es->s_first_ino = cpu_to_le32(EXT3_GOOD_OLD_FIRST_INO);
>  	es->s_inode_size = cpu_to_le16(EXT3_GOOD_OLD_INODE_SIZE);
> @@ -342,8 +355,9 @@ static struct block_device *ext3_blkdev_get(dev_t dev)
>  	return bdev;
>  
>  fail:
> -	printk(KERN_ERR "EXT3: failed to open journal device %s: %ld\n",
> -			__bdevname(dev, b), PTR_ERR(bdev));
> +	printk(KERN_ERR "EXT3-fs: failed to open journal device %s: %ld\n",
> +		__bdevname(dev, b), PTR_ERR(bdev));
> +
>  	return NULL;
>  }
>  
> @@ -378,13 +392,13 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi)
>  {
>  	struct list_head *l;
>  
> -	printk(KERN_ERR "sb orphan head is %d\n",
> +	ext3_msg(sb, KERN_ERR, "error: sb orphan head is %d",
>  	       le32_to_cpu(sbi->s_es->s_last_orphan));
>  
> -	printk(KERN_ERR "sb_info orphan list:\n");
> +	ext3_msg(sb, KERN_ERR, "sb_info orphan list:");
>  	list_for_each(l, &sbi->s_orphan) {
>  		struct inode *inode = orphan_list_entry(l);
> -		printk(KERN_ERR "  "
> +		ext3_msg(sb, KERN_ERR, "  "
>  		       "inode %s:%lu at %p: mode %o, nlink %d, next %d\n",
>  		       inode->i_sb->s_id, inode->i_ino, inode,
>  		       inode->i_mode, inode->i_nlink,
> @@ -956,7 +970,8 @@ static int parse_options (char *options, struct super_block *sb,
>  #else
>  		case Opt_user_xattr:
>  		case Opt_nouser_xattr:
> -			printk("EXT3 (no)user_xattr options not supported\n");
> +			ext3_msg(sb, KERN_INFO,
> +				"(no)user_xattr options not supported");
>  			break;
>  #endif
>  #ifdef CONFIG_EXT3_FS_POSIX_ACL
> @@ -969,7 +984,8 @@ static int parse_options (char *options, struct super_block *sb,
>  #else
>  		case Opt_acl:
>  		case Opt_noacl:
> -			printk("EXT3 (no)acl options not supported\n");
> +			ext3_msg(sb, KERN_INFO,
> +				"(no)acl options not supported");
>  			break;
>  #endif
>  		case Opt_reservation:
> @@ -985,16 +1001,16 @@ static int parse_options (char *options, struct super_block *sb,
>  			   user to specify an existing inode to be the
>  			   journal file. */
>  			if (is_remount) {
> -				printk(KERN_ERR "EXT3-fs: cannot specify "
> -				       "journal on remount\n");
> +				ext3_msg(sb, KERN_ERR, "error: cannot specify "
> +					"journal on remount");
>  				return 0;
>  			}
>  			set_opt (sbi->s_mount_opt, UPDATE_JOURNAL);
>  			break;
>  		case Opt_journal_inum:
>  			if (is_remount) {
> -				printk(KERN_ERR "EXT3-fs: cannot specify "
> -				       "journal on remount\n");
> +				ext3_msg(sb, KERN_ERR, "error: cannot specify "
> +				       "journal on remount");
>  				return 0;
>  			}
>  			if (match_int(&args[0], &option))
> @@ -1003,8 +1019,8 @@ static int parse_options (char *options, struct super_block *sb,
>  			break;
>  		case Opt_journal_dev:
>  			if (is_remount) {
> -				printk(KERN_ERR "EXT3-fs: cannot specify "
> -				       "journal on remount\n");
> +				ext3_msg(sb, KERN_ERR, "error: cannot specify "
> +				       "journal on remount");
>  				return 0;
>  			}
>  			if (match_int(&args[0], &option))
> @@ -1036,12 +1052,11 @@ static int parse_options (char *options, struct super_block *sb,
>  				if ((sbi->s_mount_opt & EXT3_MOUNT_DATA_FLAGS)
>  						== data_opt)
>  					break;
> -				printk(KERN_ERR
> -					"EXT3-fs (device %s): Cannot change "
> +				ext3_msg(sb, KERN_ERR,
> +					"error: cannot change "
>  					"data mode on remount. The filesystem "
>  					"is mounted in data=%s mode and you "
> -					"try to remount it in data=%s mode.\n",
> -					sb->s_id,
> +					"try to remount it in data=%s mode.",
>  					data_mode_string(sbi->s_mount_opt &
>  							EXT3_MOUNT_DATA_FLAGS),
>  					data_mode_string(data_opt));
> @@ -1066,31 +1081,31 @@ static int parse_options (char *options, struct super_block *sb,
>  set_qf_name:
>  			if (sb_any_quota_loaded(sb) &&
>  			    !sbi->s_qf_names[qtype]) {
> -				printk(KERN_ERR
> -					"EXT3-fs: Cannot change journaled "
> -					"quota options when quota turned on.\n");
> +				ext3_msg(sb, KERN_ERR,
> +					"error: cannot change journaled "
> +					"quota options when quota turned on.");
>  				return 0;
>  			}
>  			qname = match_strdup(&args[0]);
>  			if (!qname) {
> -				printk(KERN_ERR
> -					"EXT3-fs: not enough memory for "
> -					"storing quotafile name.\n");
> +				ext3_msg(sb, KERN_ERR,
> +					"error: not enough memory for "
> +					"storing quotafile name.");
>  				return 0;
>  			}
>  			if (sbi->s_qf_names[qtype] &&
>  			    strcmp(sbi->s_qf_names[qtype], qname)) {
> -				printk(KERN_ERR
> -					"EXT3-fs: %s quota file already "
> -					"specified.\n", QTYPE2NAME(qtype));
> +				ext3_msg(sb, KERN_ERR,
> +					"error: %s quota file already "
> +					"specified.", QTYPE2NAME(qtype));
>  				kfree(qname);
>  				return 0;
>  			}
>  			sbi->s_qf_names[qtype] = qname;
>  			if (strchr(sbi->s_qf_names[qtype], '/')) {
> -				printk(KERN_ERR
> -					"EXT3-fs: quotafile must be on "
> -					"filesystem root.\n");
> +				ext3_msg(sb, KERN_ERR,
> +					"error: quotafile must be on "
> +					"filesystem root.");
>  				kfree(sbi->s_qf_names[qtype]);
>  				sbi->s_qf_names[qtype] = NULL;
>  				return 0;
> @@ -1105,9 +1120,9 @@ set_qf_name:
>  clear_qf_name:
>  			if (sb_any_quota_loaded(sb) &&
>  			    sbi->s_qf_names[qtype]) {
> -				printk(KERN_ERR "EXT3-fs: Cannot change "
> +				ext3_msg(sb, KERN_ERR, "error: cannot change "
>  					"journaled quota options when "
> -					"quota turned on.\n");
> +					"quota turned on.");
>  				return 0;
>  			}
>  			/*
> @@ -1124,9 +1139,9 @@ clear_qf_name:
>  set_qf_format:
>  			if (sb_any_quota_loaded(sb) &&
>  			    sbi->s_jquota_fmt != qfmt) {
> -				printk(KERN_ERR "EXT3-fs: Cannot change "
> +				ext3_msg(sb, KERN_ERR, "error: cannot change "
>  					"journaled quota options when "
> -					"quota turned on.\n");
> +					"quota turned on.");
>  				return 0;
>  			}
>  			sbi->s_jquota_fmt = qfmt;
> @@ -1142,8 +1157,8 @@ set_qf_format:
>  			break;
>  		case Opt_noquota:
>  			if (sb_any_quota_loaded(sb)) {
> -				printk(KERN_ERR "EXT3-fs: Cannot change quota "
> -					"options when quota turned on.\n");
> +				ext3_msg(sb, KERN_ERR, "error: cannot change "
> +					"quota options when quota turned on.");
>  				return 0;
>  			}
>  			clear_opt(sbi->s_mount_opt, QUOTA);
> @@ -1154,8 +1169,8 @@ set_qf_format:
>  		case Opt_quota:
>  		case Opt_usrquota:
>  		case Opt_grpquota:
> -			printk(KERN_ERR
> -				"EXT3-fs: quota options not supported.\n");
> +			ext3_msg(sb, KERN_ERR,
> +				"error: quota options not supported.");
>  			break;
>  		case Opt_usrjquota:
>  		case Opt_grpjquota:
> @@ -1163,9 +1178,9 @@ set_qf_format:
>  		case Opt_offgrpjquota:
>  		case Opt_jqfmt_vfsold:
>  		case Opt_jqfmt_vfsv0:
> -			printk(KERN_ERR
> -				"EXT3-fs: journaled quota options not "
> -				"supported.\n");
> +			ext3_msg(sb, KERN_ERR,
> +				"error: journaled quota options not "
> +				"supported.");
>  			break;
>  		case Opt_noquota:
>  			break;
> @@ -1185,8 +1200,9 @@ set_qf_format:
>  			break;
>  		case Opt_resize:
>  			if (!is_remount) {
> -				printk("EXT3-fs: resize option only available "
> -					"for remount\n");
> +				ext3_msg(sb, KERN_ERR,
> +					"error: resize option only available "
> +					"for remount");
>  				return 0;
>  			}
>  			if (match_int(&args[0], &option) != 0)
> @@ -1200,9 +1216,9 @@ set_qf_format:
>  			clear_opt(sbi->s_mount_opt, NOBH);
>  			break;
>  		default:
> -			printk (KERN_ERR
> -				"EXT3-fs: Unrecognized mount option \"%s\" "
> -				"or missing value\n", p);
> +			ext3_msg(sb, KERN_ERR,
> +				"error: unrecognized mount option \"%s\" "
> +				"or missing valuen", p);
>  			return 0;
>  		}
>  	}
> @@ -1220,21 +1236,21 @@ set_qf_format:
>  				(sbi->s_mount_opt & EXT3_MOUNT_GRPQUOTA)) ||
>  		    (sbi->s_qf_names[GRPQUOTA] &&
>  				(sbi->s_mount_opt & EXT3_MOUNT_USRQUOTA))) {
> -			printk(KERN_ERR "EXT3-fs: old and new quota "
> -					"format mixing.\n");
> +			ext3_msg(sb, KERN_ERR, "error: old and new quota "
> +					"format mixing.");
>  			return 0;
>  		}
>  
>  		if (!sbi->s_jquota_fmt) {
> -			printk(KERN_ERR "EXT3-fs: journaled quota format "
> -					"not specified.\n");
> +			ext3_msg(sb, KERN_ERR, "error: journaled quota format "
> +					"not specified.");
>  			return 0;
>  		}
>  	} else {
>  		if (sbi->s_jquota_fmt) {
> -			printk(KERN_ERR "EXT3-fs: journaled quota format "
> +			ext3_msg(sb, KERN_ERR, "error: journaled quota format "
>  					"specified with no journaling "
> -					"enabled.\n");
> +					"enabled.");
>  			return 0;
>  		}
>  	}
> @@ -1249,31 +1265,33 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
>  	int res = 0;
>  
>  	if (le32_to_cpu(es->s_rev_level) > EXT3_MAX_SUPP_REV) {
> -		printk (KERN_ERR "EXT3-fs warning: revision level too high, "
> -			"forcing read-only mode\n");
> +		ext3_msg(sb, KERN_ERR,
> +			"error: revision level too high, "
> +			"forcing read-only mode");
>  		res = MS_RDONLY;
>  	}
>  	if (read_only)
>  		return res;
>  	if (!(sbi->s_mount_state & EXT3_VALID_FS))
> -		printk (KERN_WARNING "EXT3-fs warning: mounting unchecked fs, "
> -			"running e2fsck is recommended\n");
> +		ext3_msg(sb, KERN_WARNING,
> +			"warning: mounting unchecked fs, "
> +			"running e2fsck is recommended");
>  	else if ((sbi->s_mount_state & EXT3_ERROR_FS))
> -		printk (KERN_WARNING
> -			"EXT3-fs warning: mounting fs with errors, "
> -			"running e2fsck is recommended\n");
> +		ext3_msg(sb, KERN_WARNING,
> +			"warning: mounting fs with errors, "
> +			"running e2fsck is recommended");
>  	else if ((__s16) le16_to_cpu(es->s_max_mnt_count) >= 0 &&
>  		 le16_to_cpu(es->s_mnt_count) >=
>  		 (unsigned short) (__s16) le16_to_cpu(es->s_max_mnt_count))
> -		printk (KERN_WARNING
> -			"EXT3-fs warning: maximal mount count reached, "
> -			"running e2fsck is recommended\n");
> +		ext3_msg(sb, KERN_WARNING,
> +			"warning: maximal mount count reached, "
> +			"running e2fsck is recommended");
>  	else if (le32_to_cpu(es->s_checkinterval) &&
>  		(le32_to_cpu(es->s_lastcheck) +
>  			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
> -		printk (KERN_WARNING
> -			"EXT3-fs warning: checktime reached, "
> -			"running e2fsck is recommended\n");
> +		ext3_msg(sb, KERN_WARNING,
> +			"warning: checktime reached, "
> +			"running e2fsck is recommended");
>  #if 0
>  		/* @@@ We _will_ want to clear the valid bit if we find
>                     inconsistencies, to force a fsck at reboot.  But for
> @@ -1290,22 +1308,20 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
>  
>  	ext3_commit_super(sb, es, 1);
>  	if (test_opt(sb, DEBUG))
> -		printk(KERN_INFO "[EXT3 FS bs=%lu, gc=%lu, "
> -				"bpg=%lu, ipg=%lu, mo=%04lx]\n",
> +		ext3_msg(sb, KERN_INFO, "[bs=%lu, gc=%lu, "
> +				"bpg=%lu, ipg=%lu, mo=%04lx]",
>  			sb->s_blocksize,
>  			sbi->s_groups_count,
>  			EXT3_BLOCKS_PER_GROUP(sb),
>  			EXT3_INODES_PER_GROUP(sb),
>  			sbi->s_mount_opt);
>  
> -	printk(KERN_INFO "EXT3 FS on %s, ", sb->s_id);
>  	if (EXT3_SB(sb)->s_journal->j_inode == NULL) {
>  		char b[BDEVNAME_SIZE];
> -
> -		printk("external journal on %s\n",
> +		ext3_msg(sb, KERN_INFO, "using externa journal on %s",
>  			bdevname(EXT3_SB(sb)->s_journal->j_dev, b));
>  	} else {
> -		printk("internal journal\n");
> +		ext3_msg(sb, KERN_INFO, "using internal journaln");
>  	}
>  	return res;
>  }
> @@ -1399,8 +1415,8 @@ static void ext3_orphan_cleanup (struct super_block * sb,
>  	}
>  
>  	if (bdev_read_only(sb->s_bdev)) {
> -		printk(KERN_ERR "EXT3-fs: write access "
> -			"unavailable, skipping orphan cleanup.\n");
> +		ext3_msg(sb, KERN_ERR, "error: write access "
> +			"unavailable, skipping orphan cleanup.");
>  		return;
>  	}
>  
> @@ -1414,8 +1430,7 @@ static void ext3_orphan_cleanup (struct super_block * sb,
>  	}
>  
>  	if (s_flags & MS_RDONLY) {
> -		printk(KERN_INFO "EXT3-fs: %s: orphan cleanup on readonly fs\n",
> -		       sb->s_id);
> +		ext3_msg(sb, KERN_INFO, "orphan cleanup on readonly fs");
>  		sb->s_flags &= ~MS_RDONLY;
>  	}
>  #ifdef CONFIG_QUOTA
> @@ -1426,9 +1441,9 @@ static void ext3_orphan_cleanup (struct super_block * sb,
>  		if (EXT3_SB(sb)->s_qf_names[i]) {
>  			int ret = ext3_quota_on_mount(sb, i);
>  			if (ret < 0)
> -				printk(KERN_ERR
> -					"EXT3-fs: Cannot turn on journaled "
> -					"quota: error %d\n", ret);
> +				ext3_msg(sb, KERN_ERR,
> +					"error: cannot turn on journaled "
> +					"quota: %d", ret);
>  		}
>  	}
>  #endif
> @@ -1466,11 +1481,11 @@ static void ext3_orphan_cleanup (struct super_block * sb,
>  #define PLURAL(x) (x), ((x)==1) ? "" : "s"
>  
>  	if (nr_orphans)
> -		printk(KERN_INFO "EXT3-fs: %s: %d orphan inode%s deleted\n",
> -		       sb->s_id, PLURAL(nr_orphans));
> +		ext3_msg(sb, KERN_INFO, "%d orphan inode%s deleted",
> +		       PLURAL(nr_orphans));
>  	if (nr_truncates)
> -		printk(KERN_INFO "EXT3-fs: %s: %d truncate%s cleaned up\n",
> -		       sb->s_id, PLURAL(nr_truncates));
> +		ext3_msg(sb, KERN_INFO, "%d truncate%s cleaned up",
> +		       PLURAL(nr_truncates));
>  #ifdef CONFIG_QUOTA
>  	/* Turn quotas off */
>  	for (i = 0; i < MAXQUOTAS; i++) {
> @@ -1590,7 +1605,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  
>  	blocksize = sb_min_blocksize(sb, EXT3_MIN_BLOCK_SIZE);
>  	if (!blocksize) {
> -		printk(KERN_ERR "EXT3-fs: unable to set blocksize\n");
> +		ext3_msg(sb, KERN_ERR, "error: unable to set blocksize");
>  		goto out_fail;
>  	}
>  
> @@ -1606,7 +1621,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  	}
>  
>  	if (!(bh = sb_bread(sb, logic_sb_block))) {
> -		printk (KERN_ERR "EXT3-fs: unable to read superblock\n");
> +		ext3_msg(sb, KERN_ERR, "error: unable to read superblock");
>  		goto out_fail;
>  	}
>  	/*
> @@ -1665,9 +1680,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  	    (EXT3_HAS_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U)))
> -		printk(KERN_WARNING
> -		       "EXT3-fs warning: feature flags set on rev 0 fs, "
> -		       "running e2fsck is recommended\n");
> +		ext3_msg(sb, KERN_WARNING,
> +			"warning: feature flags set on rev 0 fs, "
> +			"running e2fsck is recommended");
>  	/*
>  	 * Check feature flags regardless of the revision level, since we
>  	 * previously didn't change the revision level when setting the flags,
> @@ -1675,25 +1690,25 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  	 */
>  	features = EXT3_HAS_INCOMPAT_FEATURE(sb, ~EXT3_FEATURE_INCOMPAT_SUPP);
>  	if (features) {
> -		printk(KERN_ERR "EXT3-fs: %s: couldn't mount because of "
> -		       "unsupported optional features (%x).\n",
> -		       sb->s_id, le32_to_cpu(features));
> +		ext3_msg(sb, KERN_ERR,
> +			"error: couldn't mount because of unsupported "
> +			"optional features (%x)", le32_to_cpu(features));
>  		goto failed_mount;
>  	}
>  	features = EXT3_HAS_RO_COMPAT_FEATURE(sb, ~EXT3_FEATURE_RO_COMPAT_SUPP);
>  	if (!(sb->s_flags & MS_RDONLY) && features) {
> -		printk(KERN_ERR "EXT3-fs: %s: couldn't mount RDWR because of "
> -		       "unsupported optional features (%x).\n",
> -		       sb->s_id, le32_to_cpu(features));
> +		ext3_msg(sb, KERN_ERR,
> +			"error: couldn't mount RDWR because of unsupported "
> +			"optional features (%x)", le32_to_cpu(features));
>  		goto failed_mount;
>  	}
>  	blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size);
>  
>  	if (blocksize < EXT3_MIN_BLOCK_SIZE ||
>  	    blocksize > EXT3_MAX_BLOCK_SIZE) {
> -		printk(KERN_ERR
> -		       "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n",
> -		       blocksize, sb->s_id);
> +		ext3_msg(sb, KERN_ERR,
> +			"error: couldn't mount because of unsupported "
> +			"filesystem blocksize %d", blocksize);
>  		goto failed_mount;
>  	}
>  
> @@ -1704,30 +1719,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  		 * than the hardware sectorsize for the machine.
>  		 */
>  		if (blocksize < hblock) {
> -			printk(KERN_ERR "EXT3-fs: blocksize %d too small for "
> -			       "device blocksize %d.\n", blocksize, hblock);
> +			ext3_msg(sb, KERN_ERR,
> +				"error: fsblocksize %d too small for "
> +				"hardware sectorsize %d", blocksize, hblock);
>  			goto failed_mount;
>  		}
>  
>  		brelse (bh);
>  		if (!sb_set_blocksize(sb, blocksize)) {
> -			printk(KERN_ERR "EXT3-fs: bad blocksize %d.\n",
> -				blocksize);
> +			ext3_msg(sb, KERN_ERR,
> +				"error: bad blocksize %d", blocksize);
>  			goto out_fail;
>  		}
>  		logic_sb_block = (sb_block * EXT3_MIN_BLOCK_SIZE) / blocksize;
>  		offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize;
>  		bh = sb_bread(sb, logic_sb_block);
>  		if (!bh) {
> -			printk(KERN_ERR
> -			       "EXT3-fs: Can't read superblock on 2nd try.\n");
> +			ext3_msg(sb, KERN_ERR,
> +			       "error: can't read superblock on 2nd try");
>  			goto failed_mount;
>  		}
>  		es = (struct ext3_super_block *)(((char *)bh->b_data) + offset);
>  		sbi->s_es = es;
>  		if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) {
> -			printk (KERN_ERR
> -				"EXT3-fs: Magic mismatch, very weird !\n");
> +			ext3_msg(sb, KERN_ERR,
> +				"error: magic mismatch");
>  			goto failed_mount;
>  		}
>  	}
> @@ -1743,8 +1759,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  		if ((sbi->s_inode_size < EXT3_GOOD_OLD_INODE_SIZE) ||
>  		    (!is_power_of_2(sbi->s_inode_size)) ||
>  		    (sbi->s_inode_size > blocksize)) {
> -			printk (KERN_ERR
> -				"EXT3-fs: unsupported inode size: %d\n",
> +			ext3_msg(sb, KERN_ERR,
> +				"error: unsupported inode size: %d",
>  				sbi->s_inode_size);
>  			goto failed_mount;
>  		}
> @@ -1752,8 +1768,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  	sbi->s_frag_size = EXT3_MIN_FRAG_SIZE <<
>  				   le32_to_cpu(es->s_log_frag_size);
>  	if (blocksize != sbi->s_frag_size) {
> -		printk(KERN_ERR
> -		       "EXT3-fs: fragsize %lu != blocksize %u (unsupported)\n",
> +		ext3_msg(sb, KERN_ERR,
> +		       "error: fragsize %lu != blocksize %u (unsupported)",
>  		       sbi->s_frag_size, blocksize);
>  		goto failed_mount;
>  	}
> @@ -1789,31 +1805,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  	}
>  
>  	if (sbi->s_blocks_per_group > blocksize * 8) {
> -		printk (KERN_ERR
> -			"EXT3-fs: #blocks per group too big: %lu\n",
> +		ext3_msg(sb, KERN_ERR,
> +			"#blocks per group too big: %lu",
>  			sbi->s_blocks_per_group);
>  		goto failed_mount;
>  	}
>  	if (sbi->s_frags_per_group > blocksize * 8) {
> -		printk (KERN_ERR
> -			"EXT3-fs: #fragments per group too big: %lu\n",
> +		ext3_msg(sb, KERN_ERR,
> +			"error: #fragments per group too big: %lu",
>  			sbi->s_frags_per_group);
>  		goto failed_mount;
>  	}
>  	if (sbi->s_inodes_per_group > blocksize * 8) {
> -		printk (KERN_ERR
> -			"EXT3-fs: #inodes per group too big: %lu\n",
> +		ext3_msg(sb, KERN_ERR,
> +			"error: #inodes per group too big: %lu",
>  			sbi->s_inodes_per_group);
>  		goto failed_mount;
>  	}
>  
>  	if (le32_to_cpu(es->s_blocks_count) >
>  		    (sector_t)(~0ULL) >> (sb->s_blocksize_bits - 9)) {
> -		printk(KERN_ERR "EXT3-fs: filesystem on %s:"
> -			" too large to mount safely\n", sb->s_id);
> +		ext3_msg(sb, KERN_ERR,
> +			"error: filesystem is too large to mount safely");
>  		if (sizeof(sector_t) < 8)
> -			printk(KERN_WARNING "EXT3-fs: CONFIG_LBDAF not "
> -					"enabled\n");
> +			ext3_msg(sb, KERN_ERR,
> +				"error: CONFIG_LBDAF not enabled");
>  		goto failed_mount;
>  	}
>  
> @@ -1827,7 +1843,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  	sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *),
>  				    GFP_KERNEL);
>  	if (sbi->s_group_desc == NULL) {
> -		printk (KERN_ERR "EXT3-fs: not enough memory\n");
> +		ext3_msg(sb, KERN_ERR,
> +			"error: not enough memory");
>  		goto failed_mount;
>  	}
>  
> @@ -1837,14 +1854,15 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  		block = descriptor_loc(sb, logic_sb_block, i);
>  		sbi->s_group_desc[i] = sb_bread(sb, block);
>  		if (!sbi->s_group_desc[i]) {
> -			printk (KERN_ERR "EXT3-fs: "
> -				"can't read group descriptor %d\n", i);
> +			ext3_msg(sb, KERN_ERR,
> +				"error: can't read group descriptor %d", i);
>  			db_count = i;
>  			goto failed_mount2;
>  		}
>  	}
>  	if (!ext3_check_descriptors (sb)) {
> -		printk(KERN_ERR "EXT3-fs: group descriptors corrupted!\n");
> +		ext3_msg(sb, KERN_ERR,
> +			"error: group descriptors corrupted");
>  		goto failed_mount2;
>  	}
>  	sbi->s_gdb_count = db_count;
> @@ -1862,7 +1880,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  				ext3_count_dirs(sb));
>  	}
>  	if (err) {
> -		printk(KERN_ERR "EXT3-fs: insufficient memory\n");
> +		ext3_msg(sb, KERN_ERR, "error: insufficient memory");
>  		goto failed_mount3;
>  	}
>  
> @@ -1910,9 +1928,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  			goto failed_mount3;
>  	} else {
>  		if (!silent)
> -			printk (KERN_ERR
> -				"ext3: No journal on filesystem on %s\n",
> -				sb->s_id);
> +			ext3_msg(sb, KERN_ERR,
> +				"error: no journal found. "
> +				"mounting ext3 over ext2?");
>  		goto failed_mount3;
>  	}
>  
> @@ -1934,8 +1952,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  	case EXT3_MOUNT_WRITEBACK_DATA:
>  		if (!journal_check_available_features
>  		    (sbi->s_journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)) {
> -			printk(KERN_ERR "EXT3-fs: Journal does not support "
> -			       "requested data journaling mode\n");
> +			ext3_msg(sb, KERN_ERR,
> +				"error: journal does not support "
> +				"requested data journaling mode");
>  			goto failed_mount4;
>  		}
>  	default:
> @@ -1944,8 +1963,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  
>  	if (test_opt(sb, NOBH)) {
>  		if (!(test_opt(sb, DATA_FLAGS) == EXT3_MOUNT_WRITEBACK_DATA)) {
> -			printk(KERN_WARNING "EXT3-fs: Ignoring nobh option - "
> -				"its supported only with writeback mode\n");
> +			ext3_msg(sb, KERN_WARNING,
> +				"warning: ignoring nobh option - "
> +				"its supported only with writeback mode");
>  			clear_opt(sbi->s_mount_opt, NOBH);
>  		}
>  	}
> @@ -1956,18 +1976,18 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  
>  	root = ext3_iget(sb, EXT3_ROOT_INO);
>  	if (IS_ERR(root)) {
> -		printk(KERN_ERR "EXT3-fs: get root inode failed\n");
> +		ext3_msg(sb, KERN_ERR, "error: get root inode failed");
>  		ret = PTR_ERR(root);
>  		goto failed_mount4;
>  	}
>  	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
>  		iput(root);
> -		printk(KERN_ERR "EXT3-fs: corrupt root inode, run e2fsck\n");
> +		ext3_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
>  		goto failed_mount4;
>  	}
>  	sb->s_root = d_alloc_root(root);
>  	if (!sb->s_root) {
> -		printk(KERN_ERR "EXT3-fs: get root dentry failed\n");
> +		ext3_msg(sb, KERN_ERR, "error: get root dentry failed");
>  		iput(root);
>  		ret = -ENOMEM;
>  		goto failed_mount4;
> @@ -1986,9 +2006,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  	ext3_orphan_cleanup(sb, es);
>  	EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
>  	if (needs_recovery)
> -		printk (KERN_INFO "EXT3-fs: recovery complete.\n");
> +		ext3_msg(sb, KERN_INFO, "recovery complete");
>  	ext3_mark_recovery_complete(sb, es);
> -	printk (KERN_INFO "EXT3-fs: mounted filesystem with %s data mode.\n",
> +	ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
>  		test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
>  		test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
>  		"writeback");
> @@ -1998,7 +2018,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  
>  cantfind_ext3:
>  	if (!silent)
> -		printk(KERN_ERR "VFS: Can't find ext3 filesystem on dev %s.\n",
> +		ext3_msg(sb, KERN_INFO,
> +			"error: can't find ext3 filesystem on dev %s.",
>  		       sb->s_id);
>  	goto failed_mount;
>  
> @@ -2066,27 +2087,27 @@ static journal_t *ext3_get_journal(struct super_block *sb,
>  
>  	journal_inode = ext3_iget(sb, journal_inum);
>  	if (IS_ERR(journal_inode)) {
> -		printk(KERN_ERR "EXT3-fs: no journal found.\n");
> +		ext3_msg(sb, KERN_ERR, "error: no journal found");
>  		return NULL;
>  	}
>  	if (!journal_inode->i_nlink) {
>  		make_bad_inode(journal_inode);
>  		iput(journal_inode);
> -		printk(KERN_ERR "EXT3-fs: journal inode is deleted.\n");
> +		ext3_msg(sb, KERN_ERR, "error: journal inode is deleted");
>  		return NULL;
>  	}
>  
>  	jbd_debug(2, "Journal inode found at %p: %Ld bytes\n",
>  		  journal_inode, journal_inode->i_size);
>  	if (!S_ISREG(journal_inode->i_mode)) {
> -		printk(KERN_ERR "EXT3-fs: invalid journal inode.\n");
> +		ext3_msg(sb, KERN_ERR, "error: invalid journal inode");
>  		iput(journal_inode);
>  		return NULL;
>  	}
>  
>  	journal = journal_init_inode(journal_inode);
>  	if (!journal) {
> -		printk(KERN_ERR "EXT3-fs: Could not load journal inode\n");
> +		ext3_msg(sb, KERN_ERR, "error: could not load journal inode");
>  		iput(journal_inode);
>  		return NULL;
>  	}
> @@ -2113,8 +2134,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
>  		return NULL;
>  
>  	if (bd_claim(bdev, sb)) {
> -		printk(KERN_ERR
> -		        "EXT3: failed to claim external journal device.\n");
> +		ext3_msg(sb, KERN_ERR,
> +			"error: failed to claim external journal device");
>  		blkdev_put(bdev, FMODE_READ|FMODE_WRITE);
>  		return NULL;
>  	}
> @@ -2122,8 +2143,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
>  	blocksize = sb->s_blocksize;
>  	hblock = bdev_logical_block_size(bdev);
>  	if (blocksize < hblock) {
> -		printk(KERN_ERR
> -			"EXT3-fs: blocksize too small for journal device.\n");
> +		ext3_msg(sb, KERN_ERR,
> +			"error: blocksize too small for journal device");
>  		goto out_bdev;
>  	}
>  
> @@ -2131,8 +2152,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
>  	offset = EXT3_MIN_BLOCK_SIZE % blocksize;
>  	set_blocksize(bdev, blocksize);
>  	if (!(bh = __bread(bdev, sb_block, blocksize))) {
> -		printk(KERN_ERR "EXT3-fs: couldn't read superblock of "
> -		       "external journal\n");
> +		ext3_msg(sb, KERN_ERR, "error: couldn't read superblock of "
> +			"external journal");
>  		goto out_bdev;
>  	}
>  
> @@ -2140,14 +2161,14 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
>  	if ((le16_to_cpu(es->s_magic) != EXT3_SUPER_MAGIC) ||
>  	    !(le32_to_cpu(es->s_feature_incompat) &
>  	      EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)) {
> -		printk(KERN_ERR "EXT3-fs: external journal has "
> -					"bad superblock\n");
> +		ext3_msg(sb, KERN_ERR, "error: external journal has "
> +			"bad superblock");
>  		brelse(bh);
>  		goto out_bdev;
>  	}
>  
>  	if (memcmp(EXT3_SB(sb)->s_es->s_journal_uuid, es->s_uuid, 16)) {
> -		printk(KERN_ERR "EXT3-fs: journal UUID does not match\n");
> +		ext3_msg(sb, KERN_ERR, "error: journal UUID does not match");
>  		brelse(bh);
>  		goto out_bdev;
>  	}
> @@ -2159,19 +2180,21 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
>  	journal = journal_init_dev(bdev, sb->s_bdev,
>  					start, len, blocksize);
>  	if (!journal) {
> -		printk(KERN_ERR "EXT3-fs: failed to create device journal\n");
> +		ext3_msg(sb, KERN_ERR,
> +			"error: failed to create device journal");
>  		goto out_bdev;
>  	}
>  	journal->j_private = sb;
>  	ll_rw_block(READ, 1, &journal->j_sb_buffer);
>  	wait_on_buffer(journal->j_sb_buffer);
>  	if (!buffer_uptodate(journal->j_sb_buffer)) {
> -		printk(KERN_ERR "EXT3-fs: I/O error on journal device\n");
> +		ext3_msg(sb, KERN_ERR, "I/O error on journal device");
>  		goto out_journal;
>  	}
>  	if (be32_to_cpu(journal->j_superblock->s_nr_users) != 1) {
> -		printk(KERN_ERR "EXT3-fs: External journal has more than one "
> -					"user (unsupported) - %d\n",
> +		ext3_msg(sb, KERN_ERR,
> +			"error: external journal has more than one "
> +			"user (unsupported) - %d",
>  			be32_to_cpu(journal->j_superblock->s_nr_users));
>  		goto out_journal;
>  	}
> @@ -2197,8 +2220,8 @@ static int ext3_load_journal(struct super_block *sb,
>  
>  	if (journal_devnum &&
>  	    journal_devnum != le32_to_cpu(es->s_journal_dev)) {
> -		printk(KERN_INFO "EXT3-fs: external journal device major/minor "
> -			"numbers have changed\n");
> +		ext3_msg(sb, KERN_INFO, "external journal device major/minor "
> +			"numbers have changed");
>  		journal_dev = new_decode_dev(journal_devnum);
>  	} else
>  		journal_dev = new_decode_dev(le32_to_cpu(es->s_journal_dev));
> @@ -2213,21 +2236,21 @@ static int ext3_load_journal(struct super_block *sb,
>  
>  	if (EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_RECOVER)) {
>  		if (sb->s_flags & MS_RDONLY) {
> -			printk(KERN_INFO "EXT3-fs: INFO: recovery "
> -					"required on readonly filesystem.\n");
> +			ext3_msg(sb, KERN_INFO,
> +				"recovery required on readonly filesystem");
>  			if (really_read_only) {
> -				printk(KERN_ERR "EXT3-fs: write access "
> -					"unavailable, cannot proceed.\n");
> +				ext3_msg(sb, KERN_ERR, "error: write access "
> +					"unavailable, cannot proceed");
>  				return -EROFS;
>  			}
> -			printk (KERN_INFO "EXT3-fs: write access will "
> -					"be enabled during recovery.\n");
> +			ext3_msg(sb, KERN_INFO,
> +				"write access will be enabled during recovery");
>  		}
>  	}
>  
>  	if (journal_inum && journal_dev) {
> -		printk(KERN_ERR "EXT3-fs: filesystem has both journal "
> -		       "and inode journals!\n");
> +		ext3_msg(sb, KERN_ERR, "error: filesystem has both journal "
> +		       "and inode journals");
>  		return -EINVAL;
>  	}
>  
> @@ -2242,7 +2265,7 @@ static int ext3_load_journal(struct super_block *sb,
>  	if (!really_read_only && test_opt(sb, UPDATE_JOURNAL)) {
>  		err = journal_update_format(journal);
>  		if (err)  {
> -			printk(KERN_ERR "EXT3-fs: error updating journal.\n");
> +			ext3_msg(sb, KERN_ERR, "error updating journal");
>  			journal_destroy(journal);
>  			return err;
>  		}
> @@ -2254,7 +2277,7 @@ static int ext3_load_journal(struct super_block *sb,
>  		err = journal_load(journal);
>  
>  	if (err) {
> -		printk(KERN_ERR "EXT3-fs: error loading journal.\n");
> +		ext3_msg(sb, KERN_ERR, "error loading journal");
>  		journal_destroy(journal);
>  		return err;
>  	}
> @@ -2273,16 +2296,17 @@ static int ext3_load_journal(struct super_block *sb,
>  	return 0;
>  }
>  
> -static int ext3_create_journal(struct super_block * sb,
> -			       struct ext3_super_block * es,
> +static int ext3_create_journal(struct super_block *sb,
> +			       struct ext3_super_block *es,
>  			       unsigned int journal_inum)
>  {
>  	journal_t *journal;
>  	int err;
>  
>  	if (sb->s_flags & MS_RDONLY) {
> -		printk(KERN_ERR "EXT3-fs: readonly filesystem when trying to "
> -				"create journal.\n");
> +		ext3_msg(sb, KERN_ERR,
> +			"error: readonly filesystem when trying to "
> +			"create journal");
>  		return -EROFS;
>  	}
>  
> @@ -2290,12 +2314,12 @@ static int ext3_create_journal(struct super_block * sb,
>  	if (!journal)
>  		return -EINVAL;
>  
> -	printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n",
> +	ext3_msg(sb, KERN_INFO, "creating new journal on inode %u",
>  	       journal_inum);
>  
>  	err = journal_create(journal);
>  	if (err) {
> -		printk(KERN_ERR "EXT3-fs: error creating journal.\n");
> +		ext3_msg(sb, KERN_ERR, "error creating journal");
>  		journal_destroy(journal);
>  		return -EIO;
>  	}
> @@ -2376,8 +2400,8 @@ out:
>   * has recorded an error from a previous lifetime, move that error to the
>   * main filesystem now.
>   */
> -static void ext3_clear_journal_err(struct super_block * sb,
> -				   struct ext3_super_block * es)
> +static void ext3_clear_journal_err(struct super_block *sb,
> +				   struct ext3_super_block *es)
>  {
>  	journal_t *journal;
>  	int j_errno;
> @@ -2568,10 +2592,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
>  			__le32 ret;
>  			if ((ret = EXT3_HAS_RO_COMPAT_FEATURE(sb,
>  					~EXT3_FEATURE_RO_COMPAT_SUPP))) {
> -				printk(KERN_WARNING "EXT3-fs: %s: couldn't "
> -				       "remount RDWR because of unsupported "
> -				       "optional features (%x).\n",
> -				       sb->s_id, le32_to_cpu(ret));
> +				ext3_msg(sb, KERN_WARNING,
> +					"warning: couldn't remount RDWR "
> +					"because of unsupported optional "
> +					"features (%x)", le32_to_cpu(ret));
>  				err = -EROFS;
>  				goto restore_opts;
>  			}
> @@ -2582,11 +2606,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
>  			 * require a full umount/remount for now.
>  			 */
>  			if (es->s_last_orphan) {
> -				printk(KERN_WARNING "EXT3-fs: %s: couldn't "
> +				ext3_msg(sb, KERN_WARNING, "warning: couldn't "
>  				       "remount RDWR because of unprocessed "
>  				       "orphan inode list.  Please "
> -				       "umount/remount instead.\n",
> -				       sb->s_id);
> +				       "umount/remount instead.");
>  				err = -EINVAL;
>  				goto restore_opts;
>  			}
> @@ -2837,9 +2860,9 @@ static int ext3_quota_on(struct super_block *sb, int type, int format_id,
>  	if (EXT3_SB(sb)->s_qf_names[type]) {
>  		/* Quotafile not of fs root? */
>  		if (path.dentry->d_parent != sb->s_root)
> -			printk(KERN_WARNING
> -				"EXT3-fs: Quota file not on filesystem root. "
> -				"Journaled quota will not work.\n");
> +			ext3_msg(sb, KERN_WARNING,
> +				"warning: Quota file not on filesystem root. "
> +				"Journaled quota will not work.");
>  	}
>  
>  	/*
> @@ -2921,8 +2944,9 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
>  	handle_t *handle = journal_current_handle();
>  
>  	if (!handle) {
> -		printk(KERN_WARNING "EXT3-fs: Quota write (off=%Lu, len=%Lu)"
> -			" cancelled because transaction is not started.\n",
> +		ext3_msg(sb, KERN_WARNING,
> +			"warning: quota write (off=%llu, len=%llu)"
> +			" cancelled because transaction is not started.",
>  			(unsigned long long)off, (unsigned long long)len);
>  		return -EIO;
>  	}


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v1] Unify log messages in ext3
  2009-11-21 23:55 ` Eric Sandeen
@ 2009-11-22 19:12   ` Alexey Fisher
  2009-11-22 19:38   ` [PATCH v2] " Alexey Fisher
  1 sibling, 0 replies; 11+ messages in thread
From: Alexey Fisher @ 2009-11-22 19:12 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Jan Kara, Andreas Dilger, linux-ext4, Theodore Tso

Am Samstag, den 21.11.2009, 17:55 -0600 schrieb Eric Sandeen:
> Alexey Fisher wrote:
> > make messages produced by ext3 more unified. It should be
> > easy to parse.
> 
> Didn't Andi Kleen send this change already way back on 4/26/09?
> 
> [PATCH] EXT3: Change all super.c messages to print the device
> 
> Not sure what happened to it ...
> 
> -Eric

Hmm... seems like Andis patch is against 2.6.30. I'll compare this two
patches.
	Alexey


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v2] Unify log messages in ext3
  2009-11-21 23:55 ` Eric Sandeen
  2009-11-22 19:12   ` Alexey Fisher
@ 2009-11-22 19:38   ` Alexey Fisher
  2009-11-22 19:42     ` Alexey Fisher
  2009-11-23 10:36     ` Jan Kara
  1 sibling, 2 replies; 11+ messages in thread
From: Alexey Fisher @ 2009-11-22 19:38 UTC (permalink / raw)
  To: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso
  Cc: Alexey Fisher

make messages produced by ext3 more unified. It should be
easy to parse.

dmesg before patch:
[ 4893.684892] reservations ON
[ 4893.684896] xip option not supported
[ 4893.684964] EXT3-fs warning: maximal mount count reached, running
e2fsck is recommended

dmesg after patch:
[  873.300792] EXT3-fs (loop0): using internal journaln
[  873.300796] EXT3-fs (loop0): mounted filesystem with writeback data mode
[  924.163657] EXT3-fs (loop0): error: can't find ext3 filesystem on dev loop0.
[  723.755642] EXT3-fs (loop0): error: bad blocksize 8192
[  357.874687] EXT3-fs (loop0): error: no journal found. mounting ext3 over ext2?
[  873.300764] EXT3-fs (loop0): warning: maximal mount count reached, running e2fsck is recommended
[  924.163657] EXT3-fs (loop0): error: can't find ext3 filesystem on dev loop0.

Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>

	modified:   fs/ext3/super.c
	modified:   include/linux/ext3_fs.h
---
 fs/ext3/super.c         |  432 +++++++++++++++++++++++++----------------------
 include/linux/ext3_fs.h |    2 +
 2 files changed, 229 insertions(+), 205 deletions(-)

diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 427496c..b1b6da8 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -135,12 +135,24 @@ void ext3_journal_abort_handle(const char *caller, const char *err_fn,
 	if (is_handle_aborted(handle))
 		return;
 
-	printk(KERN_ERR "%s: aborting transaction: %s in %s\n",
-	       caller, errstr, err_fn);
+	printk(KERN_ERR "EXT3-fs: %s: aborting transaction: %s in %s\n",
+		caller, errstr, err_fn);
 
 	journal_abort_handle(handle);
 }
 
+void ext3_msg(struct super_block *sb, const char *prefix,
+		const char *fmt, ...)
+{
+	va_list args;
+
+	va_start(args, fmt);
+	printk("%sEXT3-fs (%s): ", prefix, sb->s_id);
+	vprintk(fmt, args);
+	printk("\n");
+	va_end(args);
+}
+
 /* Deal with the reporting of failure conditions on a filesystem such as
  * inconsistencies detected or read IO failures.
  *
@@ -174,12 +186,13 @@ static void ext3_handle_error(struct super_block *sb)
 			journal_abort(journal, -EIO);
 	}
 	if (test_opt (sb, ERRORS_RO)) {
-		printk (KERN_CRIT "Remounting filesystem read-only\n");
+		ext3_msg(sb, KERN_CRIT,
+			"error: remounting filesystem read-only");
 		sb->s_flags |= MS_RDONLY;
 	}
 	ext3_commit_super(sb, es, 1);
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT3-fs (device %s): panic forced after error\n",
+		panic("EXT3-fs (%s): panic forced after error\n",
 			sb->s_id);
 }
 
@@ -247,8 +260,7 @@ void __ext3_std_error (struct super_block * sb, const char * function,
 		return;
 
 	errstr = ext3_decode_error(sb, errno, nbuf);
-	printk (KERN_CRIT "EXT3-fs error (device %s) in %s: %s\n",
-		sb->s_id, function, errstr);
+	ext3_msg(sb, KERN_CRIT, "error in %s: %s", function, errstr);
 
 	ext3_handle_error(sb);
 }
@@ -268,21 +280,20 @@ void ext3_abort (struct super_block * sb, const char * function,
 {
 	va_list args;
 
-	printk (KERN_CRIT "ext3_abort called.\n");
-
 	va_start(args, fmt);
-	printk(KERN_CRIT "EXT3-fs error (device %s): %s: ",sb->s_id, function);
+	printk(KERN_CRIT "EXT3-fs (%s): error: %s: ", sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
 
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT3-fs panic from previous error\n");
+		panic("EXT3-fs: panic from previous error\n");
 
 	if (sb->s_flags & MS_RDONLY)
 		return;
 
-	printk(KERN_CRIT "Remounting filesystem read-only\n");
+	ext3_msg(sb, KERN_CRIT,
+		"error: remounting filesystem read-only");
 	EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS;
 	sb->s_flags |= MS_RDONLY;
 	EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT;
@@ -296,7 +307,7 @@ void ext3_warning (struct super_block * sb, const char * function,
 	va_list args;
 
 	va_start(args, fmt);
-	printk(KERN_WARNING "EXT3-fs warning (device %s): %s: ",
+	printk(KERN_WARNING "EXT3-fs (%s): warning: %s: ",
 	       sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
@@ -310,10 +321,10 @@ void ext3_update_dynamic_rev(struct super_block *sb)
 	if (le32_to_cpu(es->s_rev_level) > EXT3_GOOD_OLD_REV)
 		return;
 
-	ext3_warning(sb, __func__,
-		     "updating to rev %d because of new feature flag, "
-		     "running e2fsck is recommended",
-		     EXT3_DYNAMIC_REV);
+	ext3_msg(sb, KERN_WARNING,
+		"warning: updating to rev %d because of "
+		"new feature flag, running e2fsck is recommended",
+		EXT3_DYNAMIC_REV);
 
 	es->s_first_ino = cpu_to_le32(EXT3_GOOD_OLD_FIRST_INO);
 	es->s_inode_size = cpu_to_le16(EXT3_GOOD_OLD_INODE_SIZE);
@@ -331,7 +342,7 @@ void ext3_update_dynamic_rev(struct super_block *sb)
 /*
  * Open the external journal device
  */
-static struct block_device *ext3_blkdev_get(dev_t dev)
+static struct block_device *ext3_blkdev_get(dev_t dev, struct super_block *sb)
 {
 	struct block_device *bdev;
 	char b[BDEVNAME_SIZE];
@@ -342,8 +353,9 @@ static struct block_device *ext3_blkdev_get(dev_t dev)
 	return bdev;
 
 fail:
-	printk(KERN_ERR "EXT3: failed to open journal device %s: %ld\n",
-			__bdevname(dev, b), PTR_ERR(bdev));
+	ext3_msg(sb, "error: failed to open journal device %s: %ld",
+		__bdevname(dev, b), PTR_ERR(bdev));
+
 	return NULL;
 }
 
@@ -378,13 +390,13 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi)
 {
 	struct list_head *l;
 
-	printk(KERN_ERR "sb orphan head is %d\n",
+	ext3_msg(sb, KERN_ERR, "error: sb orphan head is %d",
 	       le32_to_cpu(sbi->s_es->s_last_orphan));
 
-	printk(KERN_ERR "sb_info orphan list:\n");
+	ext3_msg(sb, KERN_ERR, "sb_info orphan list:");
 	list_for_each(l, &sbi->s_orphan) {
 		struct inode *inode = orphan_list_entry(l);
-		printk(KERN_ERR "  "
+		ext3_msg(sb, KERN_ERR, "  "
 		       "inode %s:%lu at %p: mode %o, nlink %d, next %d\n",
 		       inode->i_sb->s_id, inode->i_ino, inode,
 		       inode->i_mode, inode->i_nlink,
@@ -845,7 +857,7 @@ static const match_table_t tokens = {
 	{Opt_err, NULL},
 };
 
-static ext3_fsblk_t get_sb_block(void **data)
+static ext3_fsblk_t get_sb_block(void **data, struct super_block *sb)
 {
 	ext3_fsblk_t	sb_block;
 	char		*options = (char *) *data;
@@ -856,7 +868,7 @@ static ext3_fsblk_t get_sb_block(void **data)
 	/*todo: use simple_strtoll with >32bit ext3 */
 	sb_block = simple_strtoul(options, &options, 0);
 	if (*options && *options != ',') {
-		printk("EXT3-fs: Invalid sb specification: %s\n",
+		ext3_msg(sb, "error: invalid sb specification: %s",
 		       (char *) *data);
 		return 1;
 	}
@@ -956,7 +968,8 @@ static int parse_options (char *options, struct super_block *sb,
 #else
 		case Opt_user_xattr:
 		case Opt_nouser_xattr:
-			printk("EXT3 (no)user_xattr options not supported\n");
+			ext3_msg(sb, KERN_INFO,
+				"(no)user_xattr options not supported");
 			break;
 #endif
 #ifdef CONFIG_EXT3_FS_POSIX_ACL
@@ -969,7 +982,8 @@ static int parse_options (char *options, struct super_block *sb,
 #else
 		case Opt_acl:
 		case Opt_noacl:
-			printk("EXT3 (no)acl options not supported\n");
+			ext3_msg(sb, KERN_INFO,
+				"(no)acl options not supported");
 			break;
 #endif
 		case Opt_reservation:
@@ -985,16 +999,16 @@ static int parse_options (char *options, struct super_block *sb,
 			   user to specify an existing inode to be the
 			   journal file. */
 			if (is_remount) {
-				printk(KERN_ERR "EXT3-fs: cannot specify "
-				       "journal on remount\n");
+				ext3_msg(sb, KERN_ERR, "error: cannot specify "
+					"journal on remount");
 				return 0;
 			}
 			set_opt (sbi->s_mount_opt, UPDATE_JOURNAL);
 			break;
 		case Opt_journal_inum:
 			if (is_remount) {
-				printk(KERN_ERR "EXT3-fs: cannot specify "
-				       "journal on remount\n");
+				ext3_msg(sb, KERN_ERR, "error: cannot specify "
+				       "journal on remount");
 				return 0;
 			}
 			if (match_int(&args[0], &option))
@@ -1003,8 +1017,8 @@ static int parse_options (char *options, struct super_block *sb,
 			break;
 		case Opt_journal_dev:
 			if (is_remount) {
-				printk(KERN_ERR "EXT3-fs: cannot specify "
-				       "journal on remount\n");
+				ext3_msg(sb, KERN_ERR, "error: cannot specify "
+				       "journal on remount");
 				return 0;
 			}
 			if (match_int(&args[0], &option))
@@ -1036,12 +1050,11 @@ static int parse_options (char *options, struct super_block *sb,
 				if ((sbi->s_mount_opt & EXT3_MOUNT_DATA_FLAGS)
 						== data_opt)
 					break;
-				printk(KERN_ERR
-					"EXT3-fs (device %s): Cannot change "
+				ext3_msg(sb, KERN_ERR,
+					"error: cannot change "
 					"data mode on remount. The filesystem "
 					"is mounted in data=%s mode and you "
-					"try to remount it in data=%s mode.\n",
-					sb->s_id,
+					"try to remount it in data=%s mode.",
 					data_mode_string(sbi->s_mount_opt &
 							EXT3_MOUNT_DATA_FLAGS),
 					data_mode_string(data_opt));
@@ -1066,31 +1079,31 @@ static int parse_options (char *options, struct super_block *sb,
 set_qf_name:
 			if (sb_any_quota_loaded(sb) &&
 			    !sbi->s_qf_names[qtype]) {
-				printk(KERN_ERR
-					"EXT3-fs: Cannot change journaled "
-					"quota options when quota turned on.\n");
+				ext3_msg(sb, KERN_ERR,
+					"error: cannot change journaled "
+					"quota options when quota turned on.");
 				return 0;
 			}
 			qname = match_strdup(&args[0]);
 			if (!qname) {
-				printk(KERN_ERR
-					"EXT3-fs: not enough memory for "
-					"storing quotafile name.\n");
+				ext3_msg(sb, KERN_ERR,
+					"error: not enough memory for "
+					"storing quotafile name.");
 				return 0;
 			}
 			if (sbi->s_qf_names[qtype] &&
 			    strcmp(sbi->s_qf_names[qtype], qname)) {
-				printk(KERN_ERR
-					"EXT3-fs: %s quota file already "
-					"specified.\n", QTYPE2NAME(qtype));
+				ext3_msg(sb, KERN_ERR,
+					"error: %s quota file already "
+					"specified.", QTYPE2NAME(qtype));
 				kfree(qname);
 				return 0;
 			}
 			sbi->s_qf_names[qtype] = qname;
 			if (strchr(sbi->s_qf_names[qtype], '/')) {
-				printk(KERN_ERR
-					"EXT3-fs: quotafile must be on "
-					"filesystem root.\n");
+				ext3_msg(sb, KERN_ERR,
+					"error: quotafile must be on "
+					"filesystem root.");
 				kfree(sbi->s_qf_names[qtype]);
 				sbi->s_qf_names[qtype] = NULL;
 				return 0;
@@ -1105,9 +1118,9 @@ set_qf_name:
 clear_qf_name:
 			if (sb_any_quota_loaded(sb) &&
 			    sbi->s_qf_names[qtype]) {
-				printk(KERN_ERR "EXT3-fs: Cannot change "
+				ext3_msg(sb, KERN_ERR, "error: cannot change "
 					"journaled quota options when "
-					"quota turned on.\n");
+					"quota turned on.");
 				return 0;
 			}
 			/*
@@ -1124,9 +1137,9 @@ clear_qf_name:
 set_qf_format:
 			if (sb_any_quota_loaded(sb) &&
 			    sbi->s_jquota_fmt != qfmt) {
-				printk(KERN_ERR "EXT3-fs: Cannot change "
+				ext3_msg(sb, KERN_ERR, "error: cannot change "
 					"journaled quota options when "
-					"quota turned on.\n");
+					"quota turned on.");
 				return 0;
 			}
 			sbi->s_jquota_fmt = qfmt;
@@ -1142,8 +1155,8 @@ set_qf_format:
 			break;
 		case Opt_noquota:
 			if (sb_any_quota_loaded(sb)) {
-				printk(KERN_ERR "EXT3-fs: Cannot change quota "
-					"options when quota turned on.\n");
+				ext3_msg(sb, KERN_ERR, "error: cannot change "
+					"quota options when quota turned on.");
 				return 0;
 			}
 			clear_opt(sbi->s_mount_opt, QUOTA);
@@ -1154,8 +1167,8 @@ set_qf_format:
 		case Opt_quota:
 		case Opt_usrquota:
 		case Opt_grpquota:
-			printk(KERN_ERR
-				"EXT3-fs: quota options not supported.\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: quota options not supported.");
 			break;
 		case Opt_usrjquota:
 		case Opt_grpjquota:
@@ -1163,9 +1176,9 @@ set_qf_format:
 		case Opt_offgrpjquota:
 		case Opt_jqfmt_vfsold:
 		case Opt_jqfmt_vfsv0:
-			printk(KERN_ERR
-				"EXT3-fs: journaled quota options not "
-				"supported.\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: journaled quota options not "
+				"supported.");
 			break;
 		case Opt_noquota:
 			break;
@@ -1185,8 +1198,9 @@ set_qf_format:
 			break;
 		case Opt_resize:
 			if (!is_remount) {
-				printk("EXT3-fs: resize option only available "
-					"for remount\n");
+				ext3_msg(sb, KERN_ERR,
+					"error: resize option only available "
+					"for remount");
 				return 0;
 			}
 			if (match_int(&args[0], &option) != 0)
@@ -1200,9 +1214,9 @@ set_qf_format:
 			clear_opt(sbi->s_mount_opt, NOBH);
 			break;
 		default:
-			printk (KERN_ERR
-				"EXT3-fs: Unrecognized mount option \"%s\" "
-				"or missing value\n", p);
+			ext3_msg(sb, KERN_ERR,
+				"error: unrecognized mount option \"%s\" "
+				"or missing valuen", p);
 			return 0;
 		}
 	}
@@ -1220,21 +1234,21 @@ set_qf_format:
 				(sbi->s_mount_opt & EXT3_MOUNT_GRPQUOTA)) ||
 		    (sbi->s_qf_names[GRPQUOTA] &&
 				(sbi->s_mount_opt & EXT3_MOUNT_USRQUOTA))) {
-			printk(KERN_ERR "EXT3-fs: old and new quota "
-					"format mixing.\n");
+			ext3_msg(sb, KERN_ERR, "error: old and new quota "
+					"format mixing.");
 			return 0;
 		}
 
 		if (!sbi->s_jquota_fmt) {
-			printk(KERN_ERR "EXT3-fs: journaled quota format "
-					"not specified.\n");
+			ext3_msg(sb, KERN_ERR, "error: journaled quota format "
+					"not specified.");
 			return 0;
 		}
 	} else {
 		if (sbi->s_jquota_fmt) {
-			printk(KERN_ERR "EXT3-fs: journaled quota format "
+			ext3_msg(sb, KERN_ERR, "error: journaled quota format "
 					"specified with no journaling "
-					"enabled.\n");
+					"enabled.");
 			return 0;
 		}
 	}
@@ -1249,31 +1263,33 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
 	int res = 0;
 
 	if (le32_to_cpu(es->s_rev_level) > EXT3_MAX_SUPP_REV) {
-		printk (KERN_ERR "EXT3-fs warning: revision level too high, "
-			"forcing read-only mode\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: revision level too high, "
+			"forcing read-only mode");
 		res = MS_RDONLY;
 	}
 	if (read_only)
 		return res;
 	if (!(sbi->s_mount_state & EXT3_VALID_FS))
-		printk (KERN_WARNING "EXT3-fs warning: mounting unchecked fs, "
-			"running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: mounting unchecked fs, "
+			"running e2fsck is recommended");
 	else if ((sbi->s_mount_state & EXT3_ERROR_FS))
-		printk (KERN_WARNING
-			"EXT3-fs warning: mounting fs with errors, "
-			"running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: mounting fs with errors, "
+			"running e2fsck is recommended");
 	else if ((__s16) le16_to_cpu(es->s_max_mnt_count) >= 0 &&
 		 le16_to_cpu(es->s_mnt_count) >=
 		 (unsigned short) (__s16) le16_to_cpu(es->s_max_mnt_count))
-		printk (KERN_WARNING
-			"EXT3-fs warning: maximal mount count reached, "
-			"running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: maximal mount count reached, "
+			"running e2fsck is recommended");
 	else if (le32_to_cpu(es->s_checkinterval) &&
 		(le32_to_cpu(es->s_lastcheck) +
 			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
-		printk (KERN_WARNING
-			"EXT3-fs warning: checktime reached, "
-			"running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: checktime reached, "
+			"running e2fsck is recommended");
 #if 0
 		/* @@@ We _will_ want to clear the valid bit if we find
                    inconsistencies, to force a fsck at reboot.  But for
@@ -1290,22 +1306,20 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
 
 	ext3_commit_super(sb, es, 1);
 	if (test_opt(sb, DEBUG))
-		printk(KERN_INFO "[EXT3 FS bs=%lu, gc=%lu, "
-				"bpg=%lu, ipg=%lu, mo=%04lx]\n",
+		ext3_msg(sb, KERN_INFO, "[bs=%lu, gc=%lu, "
+				"bpg=%lu, ipg=%lu, mo=%04lx]",
 			sb->s_blocksize,
 			sbi->s_groups_count,
 			EXT3_BLOCKS_PER_GROUP(sb),
 			EXT3_INODES_PER_GROUP(sb),
 			sbi->s_mount_opt);
 
-	printk(KERN_INFO "EXT3 FS on %s, ", sb->s_id);
 	if (EXT3_SB(sb)->s_journal->j_inode == NULL) {
 		char b[BDEVNAME_SIZE];
-
-		printk("external journal on %s\n",
+		ext3_msg(sb, KERN_INFO, "using externa journal on %s",
 			bdevname(EXT3_SB(sb)->s_journal->j_dev, b));
 	} else {
-		printk("internal journal\n");
+		ext3_msg(sb, KERN_INFO, "using internal journaln");
 	}
 	return res;
 }
@@ -1399,8 +1413,8 @@ static void ext3_orphan_cleanup (struct super_block * sb,
 	}
 
 	if (bdev_read_only(sb->s_bdev)) {
-		printk(KERN_ERR "EXT3-fs: write access "
-			"unavailable, skipping orphan cleanup.\n");
+		ext3_msg(sb, KERN_ERR, "error: write access "
+			"unavailable, skipping orphan cleanup.");
 		return;
 	}
 
@@ -1414,8 +1428,7 @@ static void ext3_orphan_cleanup (struct super_block * sb,
 	}
 
 	if (s_flags & MS_RDONLY) {
-		printk(KERN_INFO "EXT3-fs: %s: orphan cleanup on readonly fs\n",
-		       sb->s_id);
+		ext3_msg(sb, KERN_INFO, "orphan cleanup on readonly fs");
 		sb->s_flags &= ~MS_RDONLY;
 	}
 #ifdef CONFIG_QUOTA
@@ -1426,9 +1439,9 @@ static void ext3_orphan_cleanup (struct super_block * sb,
 		if (EXT3_SB(sb)->s_qf_names[i]) {
 			int ret = ext3_quota_on_mount(sb, i);
 			if (ret < 0)
-				printk(KERN_ERR
-					"EXT3-fs: Cannot turn on journaled "
-					"quota: error %d\n", ret);
+				ext3_msg(sb, KERN_ERR,
+					"error: cannot turn on journaled "
+					"quota: %d", ret);
 		}
 	}
 #endif
@@ -1466,11 +1479,11 @@ static void ext3_orphan_cleanup (struct super_block * sb,
 #define PLURAL(x) (x), ((x)==1) ? "" : "s"
 
 	if (nr_orphans)
-		printk(KERN_INFO "EXT3-fs: %s: %d orphan inode%s deleted\n",
-		       sb->s_id, PLURAL(nr_orphans));
+		ext3_msg(sb, KERN_INFO, "%d orphan inode%s deleted",
+		       PLURAL(nr_orphans));
 	if (nr_truncates)
-		printk(KERN_INFO "EXT3-fs: %s: %d truncate%s cleaned up\n",
-		       sb->s_id, PLURAL(nr_truncates));
+		ext3_msg(sb, KERN_INFO, "%d truncate%s cleaned up",
+		       PLURAL(nr_truncates));
 #ifdef CONFIG_QUOTA
 	/* Turn quotas off */
 	for (i = 0; i < MAXQUOTAS; i++) {
@@ -1554,7 +1567,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	struct ext3_super_block *es = NULL;
 	struct ext3_sb_info *sbi;
 	ext3_fsblk_t block;
-	ext3_fsblk_t sb_block = get_sb_block(&data);
+	ext3_fsblk_t sb_block = get_sb_block(&data, sb);
 	ext3_fsblk_t logic_sb_block;
 	unsigned long offset = 0;
 	unsigned int journal_inum = 0;
@@ -1590,7 +1603,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 
 	blocksize = sb_min_blocksize(sb, EXT3_MIN_BLOCK_SIZE);
 	if (!blocksize) {
-		printk(KERN_ERR "EXT3-fs: unable to set blocksize\n");
+		ext3_msg(sb, KERN_ERR, "error: unable to set blocksize");
 		goto out_fail;
 	}
 
@@ -1606,7 +1619,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	}
 
 	if (!(bh = sb_bread(sb, logic_sb_block))) {
-		printk (KERN_ERR "EXT3-fs: unable to read superblock\n");
+		ext3_msg(sb, KERN_ERR, "error: unable to read superblock");
 		goto out_fail;
 	}
 	/*
@@ -1665,9 +1678,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	    (EXT3_HAS_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U)))
-		printk(KERN_WARNING
-		       "EXT3-fs warning: feature flags set on rev 0 fs, "
-		       "running e2fsck is recommended\n");
+		ext3_msg(sb, KERN_WARNING,
+			"warning: feature flags set on rev 0 fs, "
+			"running e2fsck is recommended");
 	/*
 	 * Check feature flags regardless of the revision level, since we
 	 * previously didn't change the revision level when setting the flags,
@@ -1675,25 +1688,25 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	 */
 	features = EXT3_HAS_INCOMPAT_FEATURE(sb, ~EXT3_FEATURE_INCOMPAT_SUPP);
 	if (features) {
-		printk(KERN_ERR "EXT3-fs: %s: couldn't mount because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext3_msg(sb, KERN_ERR,
+			"error: couldn't mount because of unsupported "
+			"optional features (%x)", le32_to_cpu(features));
 		goto failed_mount;
 	}
 	features = EXT3_HAS_RO_COMPAT_FEATURE(sb, ~EXT3_FEATURE_RO_COMPAT_SUPP);
 	if (!(sb->s_flags & MS_RDONLY) && features) {
-		printk(KERN_ERR "EXT3-fs: %s: couldn't mount RDWR because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext3_msg(sb, KERN_ERR,
+			"error: couldn't mount RDWR because of unsupported "
+			"optional features (%x)", le32_to_cpu(features));
 		goto failed_mount;
 	}
 	blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size);
 
 	if (blocksize < EXT3_MIN_BLOCK_SIZE ||
 	    blocksize > EXT3_MAX_BLOCK_SIZE) {
-		printk(KERN_ERR
-		       "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n",
-		       blocksize, sb->s_id);
+		ext3_msg(sb, KERN_ERR,
+			"error: couldn't mount because of unsupported "
+			"filesystem blocksize %d", blocksize);
 		goto failed_mount;
 	}
 
@@ -1704,30 +1717,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 		 * than the hardware sectorsize for the machine.
 		 */
 		if (blocksize < hblock) {
-			printk(KERN_ERR "EXT3-fs: blocksize %d too small for "
-			       "device blocksize %d.\n", blocksize, hblock);
+			ext3_msg(sb, KERN_ERR,
+				"error: fsblocksize %d too small for "
+				"hardware sectorsize %d", blocksize, hblock);
 			goto failed_mount;
 		}
 
 		brelse (bh);
 		if (!sb_set_blocksize(sb, blocksize)) {
-			printk(KERN_ERR "EXT3-fs: bad blocksize %d.\n",
-				blocksize);
+			ext3_msg(sb, KERN_ERR,
+				"error: bad blocksize %d", blocksize);
 			goto out_fail;
 		}
 		logic_sb_block = (sb_block * EXT3_MIN_BLOCK_SIZE) / blocksize;
 		offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize;
 		bh = sb_bread(sb, logic_sb_block);
 		if (!bh) {
-			printk(KERN_ERR
-			       "EXT3-fs: Can't read superblock on 2nd try.\n");
+			ext3_msg(sb, KERN_ERR,
+			       "error: can't read superblock on 2nd try");
 			goto failed_mount;
 		}
 		es = (struct ext3_super_block *)(((char *)bh->b_data) + offset);
 		sbi->s_es = es;
 		if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) {
-			printk (KERN_ERR
-				"EXT3-fs: Magic mismatch, very weird !\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: magic mismatch");
 			goto failed_mount;
 		}
 	}
@@ -1743,8 +1757,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 		if ((sbi->s_inode_size < EXT3_GOOD_OLD_INODE_SIZE) ||
 		    (!is_power_of_2(sbi->s_inode_size)) ||
 		    (sbi->s_inode_size > blocksize)) {
-			printk (KERN_ERR
-				"EXT3-fs: unsupported inode size: %d\n",
+			ext3_msg(sb, KERN_ERR,
+				"error: unsupported inode size: %d",
 				sbi->s_inode_size);
 			goto failed_mount;
 		}
@@ -1752,8 +1766,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	sbi->s_frag_size = EXT3_MIN_FRAG_SIZE <<
 				   le32_to_cpu(es->s_log_frag_size);
 	if (blocksize != sbi->s_frag_size) {
-		printk(KERN_ERR
-		       "EXT3-fs: fragsize %lu != blocksize %u (unsupported)\n",
+		ext3_msg(sb, KERN_ERR,
+		       "error: fragsize %lu != blocksize %u (unsupported)",
 		       sbi->s_frag_size, blocksize);
 		goto failed_mount;
 	}
@@ -1789,31 +1803,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	}
 
 	if (sbi->s_blocks_per_group > blocksize * 8) {
-		printk (KERN_ERR
-			"EXT3-fs: #blocks per group too big: %lu\n",
+		ext3_msg(sb, KERN_ERR,
+			"#blocks per group too big: %lu",
 			sbi->s_blocks_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_frags_per_group > blocksize * 8) {
-		printk (KERN_ERR
-			"EXT3-fs: #fragments per group too big: %lu\n",
+		ext3_msg(sb, KERN_ERR,
+			"error: #fragments per group too big: %lu",
 			sbi->s_frags_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_inodes_per_group > blocksize * 8) {
-		printk (KERN_ERR
-			"EXT3-fs: #inodes per group too big: %lu\n",
+		ext3_msg(sb, KERN_ERR,
+			"error: #inodes per group too big: %lu",
 			sbi->s_inodes_per_group);
 		goto failed_mount;
 	}
 
 	if (le32_to_cpu(es->s_blocks_count) >
 		    (sector_t)(~0ULL) >> (sb->s_blocksize_bits - 9)) {
-		printk(KERN_ERR "EXT3-fs: filesystem on %s:"
-			" too large to mount safely\n", sb->s_id);
+		ext3_msg(sb, KERN_ERR,
+			"error: filesystem is too large to mount safely");
 		if (sizeof(sector_t) < 8)
-			printk(KERN_WARNING "EXT3-fs: CONFIG_LBDAF not "
-					"enabled\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: CONFIG_LBDAF not enabled");
 		goto failed_mount;
 	}
 
@@ -1827,7 +1841,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *),
 				    GFP_KERNEL);
 	if (sbi->s_group_desc == NULL) {
-		printk (KERN_ERR "EXT3-fs: not enough memory\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: not enough memory");
 		goto failed_mount;
 	}
 
@@ -1837,14 +1852,15 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 		block = descriptor_loc(sb, logic_sb_block, i);
 		sbi->s_group_desc[i] = sb_bread(sb, block);
 		if (!sbi->s_group_desc[i]) {
-			printk (KERN_ERR "EXT3-fs: "
-				"can't read group descriptor %d\n", i);
+			ext3_msg(sb, KERN_ERR,
+				"error: can't read group descriptor %d", i);
 			db_count = i;
 			goto failed_mount2;
 		}
 	}
 	if (!ext3_check_descriptors (sb)) {
-		printk(KERN_ERR "EXT3-fs: group descriptors corrupted!\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: group descriptors corrupted");
 		goto failed_mount2;
 	}
 	sbi->s_gdb_count = db_count;
@@ -1862,7 +1878,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 				ext3_count_dirs(sb));
 	}
 	if (err) {
-		printk(KERN_ERR "EXT3-fs: insufficient memory\n");
+		ext3_msg(sb, KERN_ERR, "error: insufficient memory");
 		goto failed_mount3;
 	}
 
@@ -1910,9 +1926,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 			goto failed_mount3;
 	} else {
 		if (!silent)
-			printk (KERN_ERR
-				"ext3: No journal on filesystem on %s\n",
-				sb->s_id);
+			ext3_msg(sb, KERN_ERR,
+				"error: no journal found. "
+				"mounting ext3 over ext2?");
 		goto failed_mount3;
 	}
 
@@ -1934,8 +1950,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	case EXT3_MOUNT_WRITEBACK_DATA:
 		if (!journal_check_available_features
 		    (sbi->s_journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)) {
-			printk(KERN_ERR "EXT3-fs: Journal does not support "
-			       "requested data journaling mode\n");
+			ext3_msg(sb, KERN_ERR,
+				"error: journal does not support "
+				"requested data journaling mode");
 			goto failed_mount4;
 		}
 	default:
@@ -1944,8 +1961,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 
 	if (test_opt(sb, NOBH)) {
 		if (!(test_opt(sb, DATA_FLAGS) == EXT3_MOUNT_WRITEBACK_DATA)) {
-			printk(KERN_WARNING "EXT3-fs: Ignoring nobh option - "
-				"its supported only with writeback mode\n");
+			ext3_msg(sb, KERN_WARNING,
+				"warning: ignoring nobh option - "
+				"its supported only with writeback mode");
 			clear_opt(sbi->s_mount_opt, NOBH);
 		}
 	}
@@ -1956,18 +1974,18 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 
 	root = ext3_iget(sb, EXT3_ROOT_INO);
 	if (IS_ERR(root)) {
-		printk(KERN_ERR "EXT3-fs: get root inode failed\n");
+		ext3_msg(sb, KERN_ERR, "error: get root inode failed");
 		ret = PTR_ERR(root);
 		goto failed_mount4;
 	}
 	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
 		iput(root);
-		printk(KERN_ERR "EXT3-fs: corrupt root inode, run e2fsck\n");
+		ext3_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
 		goto failed_mount4;
 	}
 	sb->s_root = d_alloc_root(root);
 	if (!sb->s_root) {
-		printk(KERN_ERR "EXT3-fs: get root dentry failed\n");
+		ext3_msg(sb, KERN_ERR, "error: get root dentry failed");
 		iput(root);
 		ret = -ENOMEM;
 		goto failed_mount4;
@@ -1986,9 +2004,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 	ext3_orphan_cleanup(sb, es);
 	EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
 	if (needs_recovery)
-		printk (KERN_INFO "EXT3-fs: recovery complete.\n");
+		ext3_msg(sb, KERN_INFO, "recovery complete");
 	ext3_mark_recovery_complete(sb, es);
-	printk (KERN_INFO "EXT3-fs: mounted filesystem with %s data mode.\n",
+	ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
 		test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
 		test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
 		"writeback");
@@ -1998,7 +2016,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
 
 cantfind_ext3:
 	if (!silent)
-		printk(KERN_ERR "VFS: Can't find ext3 filesystem on dev %s.\n",
+		ext3_msg(sb, KERN_INFO,
+			"error: can't find ext3 filesystem on dev %s.",
 		       sb->s_id);
 	goto failed_mount;
 
@@ -2066,27 +2085,27 @@ static journal_t *ext3_get_journal(struct super_block *sb,
 
 	journal_inode = ext3_iget(sb, journal_inum);
 	if (IS_ERR(journal_inode)) {
-		printk(KERN_ERR "EXT3-fs: no journal found.\n");
+		ext3_msg(sb, KERN_ERR, "error: no journal found");
 		return NULL;
 	}
 	if (!journal_inode->i_nlink) {
 		make_bad_inode(journal_inode);
 		iput(journal_inode);
-		printk(KERN_ERR "EXT3-fs: journal inode is deleted.\n");
+		ext3_msg(sb, KERN_ERR, "error: journal inode is deleted");
 		return NULL;
 	}
 
 	jbd_debug(2, "Journal inode found at %p: %Ld bytes\n",
 		  journal_inode, journal_inode->i_size);
 	if (!S_ISREG(journal_inode->i_mode)) {
-		printk(KERN_ERR "EXT3-fs: invalid journal inode.\n");
+		ext3_msg(sb, KERN_ERR, "error: invalid journal inode");
 		iput(journal_inode);
 		return NULL;
 	}
 
 	journal = journal_init_inode(journal_inode);
 	if (!journal) {
-		printk(KERN_ERR "EXT3-fs: Could not load journal inode\n");
+		ext3_msg(sb, KERN_ERR, "error: could not load journal inode");
 		iput(journal_inode);
 		return NULL;
 	}
@@ -2108,13 +2127,13 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	struct ext3_super_block * es;
 	struct block_device *bdev;
 
-	bdev = ext3_blkdev_get(j_dev);
+	bdev = ext3_blkdev_get(j_dev, sb);
 	if (bdev == NULL)
 		return NULL;
 
 	if (bd_claim(bdev, sb)) {
-		printk(KERN_ERR
-		        "EXT3: failed to claim external journal device.\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: failed to claim external journal device");
 		blkdev_put(bdev, FMODE_READ|FMODE_WRITE);
 		return NULL;
 	}
@@ -2122,8 +2141,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	blocksize = sb->s_blocksize;
 	hblock = bdev_logical_block_size(bdev);
 	if (blocksize < hblock) {
-		printk(KERN_ERR
-			"EXT3-fs: blocksize too small for journal device.\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: blocksize too small for journal device");
 		goto out_bdev;
 	}
 
@@ -2131,8 +2150,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	offset = EXT3_MIN_BLOCK_SIZE % blocksize;
 	set_blocksize(bdev, blocksize);
 	if (!(bh = __bread(bdev, sb_block, blocksize))) {
-		printk(KERN_ERR "EXT3-fs: couldn't read superblock of "
-		       "external journal\n");
+		ext3_msg(sb, KERN_ERR, "error: couldn't read superblock of "
+			"external journal");
 		goto out_bdev;
 	}
 
@@ -2140,14 +2159,14 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	if ((le16_to_cpu(es->s_magic) != EXT3_SUPER_MAGIC) ||
 	    !(le32_to_cpu(es->s_feature_incompat) &
 	      EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)) {
-		printk(KERN_ERR "EXT3-fs: external journal has "
-					"bad superblock\n");
+		ext3_msg(sb, KERN_ERR, "error: external journal has "
+			"bad superblock");
 		brelse(bh);
 		goto out_bdev;
 	}
 
 	if (memcmp(EXT3_SB(sb)->s_es->s_journal_uuid, es->s_uuid, 16)) {
-		printk(KERN_ERR "EXT3-fs: journal UUID does not match\n");
+		ext3_msg(sb, KERN_ERR, "error: journal UUID does not match");
 		brelse(bh);
 		goto out_bdev;
 	}
@@ -2159,19 +2178,21 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
 	journal = journal_init_dev(bdev, sb->s_bdev,
 					start, len, blocksize);
 	if (!journal) {
-		printk(KERN_ERR "EXT3-fs: failed to create device journal\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: failed to create device journal");
 		goto out_bdev;
 	}
 	journal->j_private = sb;
 	ll_rw_block(READ, 1, &journal->j_sb_buffer);
 	wait_on_buffer(journal->j_sb_buffer);
 	if (!buffer_uptodate(journal->j_sb_buffer)) {
-		printk(KERN_ERR "EXT3-fs: I/O error on journal device\n");
+		ext3_msg(sb, KERN_ERR, "I/O error on journal device");
 		goto out_journal;
 	}
 	if (be32_to_cpu(journal->j_superblock->s_nr_users) != 1) {
-		printk(KERN_ERR "EXT3-fs: External journal has more than one "
-					"user (unsupported) - %d\n",
+		ext3_msg(sb, KERN_ERR,
+			"error: external journal has more than one "
+			"user (unsupported) - %d",
 			be32_to_cpu(journal->j_superblock->s_nr_users));
 		goto out_journal;
 	}
@@ -2197,8 +2218,8 @@ static int ext3_load_journal(struct super_block *sb,
 
 	if (journal_devnum &&
 	    journal_devnum != le32_to_cpu(es->s_journal_dev)) {
-		printk(KERN_INFO "EXT3-fs: external journal device major/minor "
-			"numbers have changed\n");
+		ext3_msg(sb, KERN_INFO, "external journal device major/minor "
+			"numbers have changed");
 		journal_dev = new_decode_dev(journal_devnum);
 	} else
 		journal_dev = new_decode_dev(le32_to_cpu(es->s_journal_dev));
@@ -2213,21 +2234,21 @@ static int ext3_load_journal(struct super_block *sb,
 
 	if (EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_RECOVER)) {
 		if (sb->s_flags & MS_RDONLY) {
-			printk(KERN_INFO "EXT3-fs: INFO: recovery "
-					"required on readonly filesystem.\n");
+			ext3_msg(sb, KERN_INFO,
+				"recovery required on readonly filesystem");
 			if (really_read_only) {
-				printk(KERN_ERR "EXT3-fs: write access "
-					"unavailable, cannot proceed.\n");
+				ext3_msg(sb, KERN_ERR, "error: write access "
+					"unavailable, cannot proceed");
 				return -EROFS;
 			}
-			printk (KERN_INFO "EXT3-fs: write access will "
-					"be enabled during recovery.\n");
+			ext3_msg(sb, KERN_INFO,
+				"write access will be enabled during recovery");
 		}
 	}
 
 	if (journal_inum && journal_dev) {
-		printk(KERN_ERR "EXT3-fs: filesystem has both journal "
-		       "and inode journals!\n");
+		ext3_msg(sb, KERN_ERR, "error: filesystem has both journal "
+		       "and inode journals");
 		return -EINVAL;
 	}
 
@@ -2242,7 +2263,7 @@ static int ext3_load_journal(struct super_block *sb,
 	if (!really_read_only && test_opt(sb, UPDATE_JOURNAL)) {
 		err = journal_update_format(journal);
 		if (err)  {
-			printk(KERN_ERR "EXT3-fs: error updating journal.\n");
+			ext3_msg(sb, KERN_ERR, "error updating journal");
 			journal_destroy(journal);
 			return err;
 		}
@@ -2254,7 +2275,7 @@ static int ext3_load_journal(struct super_block *sb,
 		err = journal_load(journal);
 
 	if (err) {
-		printk(KERN_ERR "EXT3-fs: error loading journal.\n");
+		ext3_msg(sb, KERN_ERR, "error loading journal");
 		journal_destroy(journal);
 		return err;
 	}
@@ -2273,16 +2294,17 @@ static int ext3_load_journal(struct super_block *sb,
 	return 0;
 }
 
-static int ext3_create_journal(struct super_block * sb,
-			       struct ext3_super_block * es,
+static int ext3_create_journal(struct super_block *sb,
+			       struct ext3_super_block *es,
 			       unsigned int journal_inum)
 {
 	journal_t *journal;
 	int err;
 
 	if (sb->s_flags & MS_RDONLY) {
-		printk(KERN_ERR "EXT3-fs: readonly filesystem when trying to "
-				"create journal.\n");
+		ext3_msg(sb, KERN_ERR,
+			"error: readonly filesystem when trying to "
+			"create journal");
 		return -EROFS;
 	}
 
@@ -2290,12 +2312,12 @@ static int ext3_create_journal(struct super_block * sb,
 	if (!journal)
 		return -EINVAL;
 
-	printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n",
+	ext3_msg(sb, KERN_INFO, "creating new journal on inode %u",
 	       journal_inum);
 
 	err = journal_create(journal);
 	if (err) {
-		printk(KERN_ERR "EXT3-fs: error creating journal.\n");
+		ext3_msg(sb, KERN_ERR, "error creating journal");
 		journal_destroy(journal);
 		return -EIO;
 	}
@@ -2376,8 +2398,8 @@ out:
  * has recorded an error from a previous lifetime, move that error to the
  * main filesystem now.
  */
-static void ext3_clear_journal_err(struct super_block * sb,
-				   struct ext3_super_block * es)
+static void ext3_clear_journal_err(struct super_block *sb,
+				   struct ext3_super_block *es)
 {
 	journal_t *journal;
 	int j_errno;
@@ -2568,10 +2590,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
 			__le32 ret;
 			if ((ret = EXT3_HAS_RO_COMPAT_FEATURE(sb,
 					~EXT3_FEATURE_RO_COMPAT_SUPP))) {
-				printk(KERN_WARNING "EXT3-fs: %s: couldn't "
-				       "remount RDWR because of unsupported "
-				       "optional features (%x).\n",
-				       sb->s_id, le32_to_cpu(ret));
+				ext3_msg(sb, KERN_WARNING,
+					"warning: couldn't remount RDWR "
+					"because of unsupported optional "
+					"features (%x)", le32_to_cpu(ret));
 				err = -EROFS;
 				goto restore_opts;
 			}
@@ -2582,11 +2604,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
 			 * require a full umount/remount for now.
 			 */
 			if (es->s_last_orphan) {
-				printk(KERN_WARNING "EXT3-fs: %s: couldn't "
+				ext3_msg(sb, KERN_WARNING, "warning: couldn't "
 				       "remount RDWR because of unprocessed "
 				       "orphan inode list.  Please "
-				       "umount/remount instead.\n",
-				       sb->s_id);
+				       "umount/remount instead.");
 				err = -EINVAL;
 				goto restore_opts;
 			}
@@ -2837,9 +2858,9 @@ static int ext3_quota_on(struct super_block *sb, int type, int format_id,
 	if (EXT3_SB(sb)->s_qf_names[type]) {
 		/* Quotafile not of fs root? */
 		if (path.dentry->d_parent != sb->s_root)
-			printk(KERN_WARNING
-				"EXT3-fs: Quota file not on filesystem root. "
-				"Journaled quota will not work.\n");
+			ext3_msg(sb, KERN_WARNING,
+				"warning: Quota file not on filesystem root. "
+				"Journaled quota will not work.");
 	}
 
 	/*
@@ -2921,8 +2942,9 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
 	handle_t *handle = journal_current_handle();
 
 	if (!handle) {
-		printk(KERN_WARNING "EXT3-fs: Quota write (off=%Lu, len=%Lu)"
-			" cancelled because transaction is not started.\n",
+		ext3_msg(sb, KERN_WARNING,
+			"warning: quota write (off=%llu, len=%llu)"
+			" cancelled because transaction is not started.",
 			(unsigned long long)off, (unsigned long long)len);
 		return -EIO;
 	}
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
index 7499b36..6b04903 100644
--- a/include/linux/ext3_fs.h
+++ b/include/linux/ext3_fs.h
@@ -918,6 +918,8 @@ extern void ext3_abort (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
 extern void ext3_warning (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
+extern void ext3_msg(struct super_block *, const char *, const char *, ...)
+	__attribute__ ((format (printf, 3, 4)));
 extern void ext3_update_dynamic_rev (struct super_block *sb);
 
 #define ext3_std_error(sb, errno)				\
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] Unify log messages in ext3
  2009-11-22 19:38   ` [PATCH v2] " Alexey Fisher
@ 2009-11-22 19:42     ` Alexey Fisher
  2009-11-23 10:36     ` Jan Kara
  1 sibling, 0 replies; 11+ messages in thread
From: Alexey Fisher @ 2009-11-22 19:42 UTC (permalink / raw)
  To: Jan Kara; +Cc: Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso

Am Sonntag, den 22.11.2009, 20:38 +0100 schrieb Alexey Fisher:
> make messages produced by ext3 more unified. It should be
> easy to parse.
> 
> dmesg before patch:
> [ 4893.684892] reservations ON
> [ 4893.684896] xip option not supported
> [ 4893.684964] EXT3-fs warning: maximal mount count reached, running
> e2fsck is recommended

I added some changes from Andis patch, so it up to date with git master.
I hope this patch will not be lost ;)
Regards,
	Alexey


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] Unify log messages in ext3
  2009-11-22 19:38   ` [PATCH v2] " Alexey Fisher
  2009-11-22 19:42     ` Alexey Fisher
@ 2009-11-23 10:36     ` Jan Kara
  2009-11-23 11:45       ` Unify log messages in ext4 Alexey Fisher
  1 sibling, 1 reply; 11+ messages in thread
From: Jan Kara @ 2009-11-23 10:36 UTC (permalink / raw)
  To: Alexey Fisher
  Cc: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso

  Thanks for the patch. I've merged it into my tree just with the following
typo fixes.

								Honza

> diff --git a/fs/ext3/super.c b/fs/ext3/super.c
> index 427496c..b1b6da8 100644
> --- a/fs/ext3/super.c
> +++ b/fs/ext3/super.c
> @@ -1200,9 +1214,9 @@ set_qf_format:
>  			clear_opt(sbi->s_mount_opt, NOBH);
>  			break;
>  		default:
> -			printk (KERN_ERR
> -				"EXT3-fs: Unrecognized mount option \"%s\" "
> -				"or missing value\n", p);
> +			ext3_msg(sb, KERN_ERR,
> +				"error: unrecognized mount option \"%s\" "
> +				"or missing valuen", p);
                                                ^^^ value
> @@ -1290,22 +1306,20 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
>  
>  	ext3_commit_super(sb, es, 1);
>  	if (test_opt(sb, DEBUG))
> -		printk(KERN_INFO "[EXT3 FS bs=%lu, gc=%lu, "
> -				"bpg=%lu, ipg=%lu, mo=%04lx]\n",
> +		ext3_msg(sb, KERN_INFO, "[bs=%lu, gc=%lu, "
> +				"bpg=%lu, ipg=%lu, mo=%04lx]",
>  			sb->s_blocksize,
>  			sbi->s_groups_count,
>  			EXT3_BLOCKS_PER_GROUP(sb),
>  			EXT3_INODES_PER_GROUP(sb),
>  			sbi->s_mount_opt);
>  
> -	printk(KERN_INFO "EXT3 FS on %s, ", sb->s_id);
>  	if (EXT3_SB(sb)->s_journal->j_inode == NULL) {
>  		char b[BDEVNAME_SIZE];
> -
> -		printk("external journal on %s\n",
> +		ext3_msg(sb, KERN_INFO, "using externa journal on %s",
                                                   ^^^ external

>  			bdevname(EXT3_SB(sb)->s_journal->j_dev, b));
>  	} else {
> -		printk("internal journal\n");
> +		ext3_msg(sb, KERN_INFO, "using internal journaln");
                                                        ^^^^^ journal

> @@ -1944,8 +1961,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
>  
>  	if (test_opt(sb, NOBH)) {
>  		if (!(test_opt(sb, DATA_FLAGS) == EXT3_MOUNT_WRITEBACK_DATA)) {
> -			printk(KERN_WARNING "EXT3-fs: Ignoring nobh option - "
> -				"its supported only with writeback mode\n");
> +			ext3_msg(sb, KERN_WARNING,
> +				"warning: ignoring nobh option - "
> +				"its supported only with writeback mode");
                                 ^^^ it is

										Honza
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Unify log messages in ext4
  2009-11-23 10:36     ` Jan Kara
@ 2009-11-23 11:45       ` Alexey Fisher
  2009-11-23 11:55         ` Jan Kara
  0 siblings, 1 reply; 11+ messages in thread
From: Alexey Fisher @ 2009-11-23 11:45 UTC (permalink / raw)
  To: Jan Kara; +Cc: Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso

Am Montag, den 23.11.2009, 11:36 +0100 schrieb Jan Kara:
> Thanks for the patch. I've merged it into my tree just with the following
> typo fixes.

Thank you,
are there any ext4 patches around? Or this will be my next step. 


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Unify log messages in ext4
  2009-11-23 11:45       ` Unify log messages in ext4 Alexey Fisher
@ 2009-11-23 11:55         ` Jan Kara
  2009-11-23 14:11           ` tytso
  0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2009-11-23 11:55 UTC (permalink / raw)
  To: Alexey Fisher
  Cc: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso

On Mon 23-11-09 12:45:36, Alexey Fisher wrote:
> Am Montag, den 23.11.2009, 11:36 +0100 schrieb Jan Kara:
> > Thanks for the patch. I've merged it into my tree just with the following
> > typo fixes.
> 
> Thank you,
> are there any ext4 patches around? Or this will be my next step. 
  I'm not aware of them...

									Honza

-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Unify log messages in ext4
  2009-11-23 11:55         ` Jan Kara
@ 2009-11-23 14:11           ` tytso
  2009-11-23 15:11             ` Alexey Fisher
  2009-11-23 16:16             ` Eric Sandeen
  0 siblings, 2 replies; 11+ messages in thread
From: tytso @ 2009-11-23 14:11 UTC (permalink / raw)
  To: Jan Kara; +Cc: Alexey Fisher, Eric Sandeen, Andreas Dilger, linux-ext4

On Mon, Nov 23, 2009 at 12:55:14PM +0100, Jan Kara wrote:
> On Mon 23-11-09 12:45:36, Alexey Fisher wrote:
> > Am Montag, den 23.11.2009, 11:36 +0100 schrieb Jan Kara:
> > > Thanks for the patch. I've merged it into my tree just with the following
> > > typo fixes.
> > 
> > Thank you,
> > are there any ext4 patches around? Or this will be my next step. 
>   I'm not aware of them...

Ext4 is using ext4_msg() already.  Eric Sandeen added it a while ago,
and the idea to convert ext2 and ext4 to use ext2_msg() and ext3_msg()
came from ext4.

					- Ted

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Unify log messages in ext4
  2009-11-23 14:11           ` tytso
@ 2009-11-23 15:11             ` Alexey Fisher
  2009-11-23 16:16             ` Eric Sandeen
  1 sibling, 0 replies; 11+ messages in thread
From: Alexey Fisher @ 2009-11-23 15:11 UTC (permalink / raw)
  To: tytso; +Cc: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4

Am Montag, den 23.11.2009, 09:11 -0500 schrieb tytso@mit.edu:
> On Mon, Nov 23, 2009 at 12:55:14PM +0100, Jan Kara wrote:
> > On Mon 23-11-09 12:45:36, Alexey Fisher wrote:
> > > Am Montag, den 23.11.2009, 11:36 +0100 schrieb Jan Kara:
> > > > Thanks for the patch. I've merged it into my tree just with the following
> > > > typo fixes.
> > > 
> > > Thank you,
> > > are there any ext4 patches around? Or this will be my next step. 
> >   I'm not aware of them...
> 
> Ext4 is using ext4_msg() already.  Eric Sandeen added it a while ago,
> and the idea to convert ext2 and ext4 to use ext2_msg() and ext3_msg()
> came from ext4.

O, yeah..
i greped ext4/super.c and there is no mach left.
now i have most i need from ext[234],

Thank you,
	Alexey


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Unify log messages in ext4
  2009-11-23 14:11           ` tytso
  2009-11-23 15:11             ` Alexey Fisher
@ 2009-11-23 16:16             ` Eric Sandeen
  1 sibling, 0 replies; 11+ messages in thread
From: Eric Sandeen @ 2009-11-23 16:16 UTC (permalink / raw)
  To: tytso; +Cc: Jan Kara, Alexey Fisher, Andreas Dilger, linux-ext4

tytso@mit.edu wrote:
> On Mon, Nov 23, 2009 at 12:55:14PM +0100, Jan Kara wrote:
>> On Mon 23-11-09 12:45:36, Alexey Fisher wrote:
>>> Am Montag, den 23.11.2009, 11:36 +0100 schrieb Jan Kara:
>>>> Thanks for the patch. I've merged it into my tree just with the following
>>>> typo fixes.
>>> Thank you,
>>> are there any ext4 patches around? Or this will be my next step. 
>>   I'm not aware of them...
> 
> Ext4 is using ext4_msg() already.  Eric Sandeen added it a while ago,
> and the idea to convert ext2 and ext4 to use ext2_msg() and ext3_msg()
> came from ext4.
> 
> 					- Ted

Actually, I think Andi originally sent it for ext3, and I motivated to
do it for ext4; the ext3 patch from Andi got lost...

-Eric

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2009-11-23 16:16 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-21 10:25 [PATCH v1] Unify log messages in ext3 Alexey Fisher
2009-11-21 23:55 ` Eric Sandeen
2009-11-22 19:12   ` Alexey Fisher
2009-11-22 19:38   ` [PATCH v2] " Alexey Fisher
2009-11-22 19:42     ` Alexey Fisher
2009-11-23 10:36     ` Jan Kara
2009-11-23 11:45       ` Unify log messages in ext4 Alexey Fisher
2009-11-23 11:55         ` Jan Kara
2009-11-23 14:11           ` tytso
2009-11-23 15:11             ` Alexey Fisher
2009-11-23 16:16             ` Eric Sandeen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.