All of lore.kernel.org
 help / color / mirror / Atom feed
* Corrupt superblocks
@ 2009-11-04 18:39 fabian-buettner
  2009-11-04 19:21 ` Eric Sandeen
  0 siblings, 1 reply; 20+ messages in thread
From: fabian-buettner @ 2009-11-04 18:39 UTC (permalink / raw)
  To: linux-ext4

Hello,

After updating my gentoo machine (new udev, lvm2) and rebooting, my initrd was 
broken (i had CONFIG_SYSFS_DEPRECATED and CONFIG_SYSFS_DEPRECATEDV2 activated) 
and the new udev didn't like these settings.
So I received a warning regarding this issue. Unfortunately I had set the init 
bootparameter to init=/sbin/bootchartd. And when i was returning from getting 
a cup of coffee. Bootchartd was spamming my console telling me: No space left 
on the device (or similar). When i was seeing this i had instantly a VERY bad 
feeling about what was going on there.

So i put in the rescuecd, chrooted into my old system, built a new kernel 
without these deprecated options, rebooted again.

This time fsck.ext4 was telling me: No such file or directory while trying to 
open /dev/vg/root, the superblock could not be read.

That's the story how I managed to corrupt my superblock and probably also it's 
backups.
I have run e2fsck -b for several times (with different superblock backup 
locations), also did a fsck manually and got spammed by a LOT of "Group 
descriptor checksum is invalid" warnings, but the fsck.ext4 error message 
remained.

For now I have set my filesystem in /etc/fstab to 0 0, but i REALLY want to get 
this fixed. 

So i googled around and found this thread: 
http://markmail.org/message/3w5tbyaiho7os4fr where some guy as a similar 
problem. 
Theodore Tso asked him to execute several commands, which i did too.
It would be great if someone with more experience than me could check those 
files, unfortunately they are huge.
Here is the link to the three logs:
http://www.file-upload.net/download-1989316/dumpe2fsfab.tar.gz.html

Thanks in advance,
fabian

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

* Re: Corrupt superblocks
  2009-11-04 18:39 Corrupt superblocks fabian-buettner
@ 2009-11-04 19:21 ` Eric Sandeen
  2009-11-04 20:40   ` [PATCH] make unified logs on ext2 Alexey Fisher
  2009-11-04 21:56   ` Corrupt superblocks fabian-buettner
  0 siblings, 2 replies; 20+ messages in thread
From: Eric Sandeen @ 2009-11-04 19:21 UTC (permalink / raw)
  To: fabian-buettner; +Cc: linux-ext4

fabian-buettner@gmx.de wrote:
> Hello,
> 
> After updating my gentoo machine (new udev, lvm2) and rebooting, my initrd was 
> broken (i had CONFIG_SYSFS_DEPRECATED and CONFIG_SYSFS_DEPRECATEDV2 activated) 
> and the new udev didn't like these settings.
> So I received a warning regarding this issue. Unfortunately I had set the init 
> bootparameter to init=/sbin/bootchartd. And when i was returning from getting 
> a cup of coffee. Bootchartd was spamming my console telling me: No space left 
> on the device (or similar). When i was seeing this i had instantly a VERY bad 
> feeling about what was going on there.
> 
> So i put in the rescuecd, chrooted into my old system, built a new kernel 
> without these deprecated options, rebooted again.
> 
> This time fsck.ext4 was telling me: No such file or directory while trying to 
> open /dev/vg/root, the superblock could not be read.

This looks more like a storage problem tnan an ext4 problem.

> That's the story how I managed to corrupt my superblock and probably also it's 
> backups.

Why do you say you have a corrupted superblock?

I suppose I'd try booting a live/rescue cd, and just manually run e2fsck
against your root device, as a starter - and capture any interesting output.

Any sort of kernel or fsck logs indicating more of what actually went
wrong would be Very helpful here.

-Eric


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

* [PATCH] make unified logs on ext2
  2009-11-04 19:21 ` Eric Sandeen
@ 2009-11-04 20:40   ` Alexey Fisher
  2009-11-05  4:50     ` Andreas Dilger
  2009-11-04 21:56   ` Corrupt superblocks fabian-buettner
  1 sibling, 1 reply; 20+ messages in thread
From: Alexey Fisher @ 2009-11-04 20:40 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: linux-ext4

[-- Attachment #1: Type: text/plain, Size: 839 bytes --]

Hallo,
i trying to make messages produced by ext2 more unified. It should be
easy to parse.

dmesg before patch:
[ 4893.684892] reservations ON
[ 4893.684896] xip option not supported
[ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
[ 4893.684964] EXT2-fs warning: maximal mount count reached, running
e2fsck is recommended
[ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]



dmesg after patch:
[ 4893.684892] EXT2-fs (loop0): reservations ON
[ 4893.684896] EXT2-fs (loop0): xip option not supported
[ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
ext2
[ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
running e2fsck is recommended
[ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

[-- Attachment #2: ext2_dmesg.diff --]
[-- Type: text/x-patch, Size: 14946 bytes --]

diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 9a8a8e2..29f65c5 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -142,6 +142,8 @@ struct dentry *ext2_get_parent(struct dentry *child);
 /* super.c */
 extern void ext2_error (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
+extern void ext2_msg(struct super_block *, const char *, const char *, ...)
+	__attribute__ ((format (printf, 3, 4)));
 extern void ext2_warning (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
 extern void ext2_update_dynamic_rev (struct super_block *sb);
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 1a9ffee..f5d8f13 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -58,26 +58,38 @@ void ext2_error (struct super_block * sb, const char * function,
 	}
 
 	va_start(args, fmt);
-	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
+	ext2_msg(sb, KERN_CRIT, "error %s", function);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
 
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT2-fs panic from previous error\n");
+		panic("EXT2-fs: panic from previous error\n");
 	if (test_opt(sb, ERRORS_RO)) {
-		printk("Remounting filesystem read-only\n");
+		ext2_msg(sb, KERN_CRIT, "Remounting filesystem read-only");
 		sb->s_flags |= MS_RDONLY;
 	}
 }
 
+void ext2_msg (struct super_block * sb, const char *prefix,
+		const char *fmt, ...)
+{
+	va_list args;
+
+	va_start(args, fmt);
+	printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
+	vprintk(fmt, args);
+	printk("\n");
+	va_end(args);
+}
+
 void ext2_warning (struct super_block * sb, const char * function,
 		   const char * fmt, ...)
 {
 	va_list args;
 
 	va_start(args, fmt);
-	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
+	printk(KERN_WARNING "EXT2-fs (%s) warning: %s: ",
 	       sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
@@ -420,7 +432,7 @@ static const match_table_t tokens = {
 };
 
 static int parse_options (char * options,
-			  struct ext2_sb_info *sbi)
+			  struct ext2_sb_info *sbi, struct super_block *sb)
 {
 	char * p;
 	substring_t args[MAX_OPT_ARGS];
@@ -505,7 +517,8 @@ static int parse_options (char * options,
 #else
 		case Opt_user_xattr:
 		case Opt_nouser_xattr:
-			printk("EXT2 (no)user_xattr options not supported\n");
+			ext2_msg(sb, KERN_INFO, "(no)user_xattr options"
+				"not supported");
 			break;
 #endif
 #ifdef CONFIG_EXT2_FS_POSIX_ACL
@@ -518,14 +531,15 @@ static int parse_options (char * options,
 #else
 		case Opt_acl:
 		case Opt_noacl:
-			printk("EXT2 (no)acl options not supported\n");
+			ext2_msg(sb, KERN_INFO,
+				"(no)acl options not supported");
 			break;
 #endif
 		case Opt_xip:
 #ifdef CONFIG_EXT2_FS_XIP
 			set_opt (sbi->s_mount_opt, XIP);
 #else
-			printk("EXT2 xip option not supported\n");
+			ext2_msg(sb, KERN_INFO, "xip option not supported");
 #endif
 			break;
 
@@ -542,19 +556,18 @@ static int parse_options (char * options,
 		case Opt_quota:
 		case Opt_usrquota:
 		case Opt_grpquota:
-			printk(KERN_ERR
-				"EXT2-fs: quota operations not supported.\n");
-
+			ext2_msg(sb, KERN_INFO,
+				"quota operations not supported");
 			break;
 #endif
 
 		case Opt_reservation:
 			set_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations ON\n");
+			ext2_msg(sb, KERN_INFO, "reservations ON");
 			break;
 		case Opt_noreservation:
 			clear_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations OFF\n");
+			ext2_msg(sb, KERN_INFO, "reservations OFF");
 			break;
 		case Opt_ignore:
 			break;
@@ -573,34 +586,39 @@ static int ext2_setup_super (struct super_block * sb,
 	struct ext2_sb_info *sbi = EXT2_SB(sb);
 
 	if (le32_to_cpu(es->s_rev_level) > EXT2_MAX_SUPP_REV) {
-		printk ("EXT2-fs warning: revision level too high, "
-			"forcing read-only mode\n");
+		ext2_msg(sb, KERN_ERR,
+			"revision level too high, forcing read-only mode");
 		res = MS_RDONLY;
 	}
 	if (read_only)
 		return res;
 	if (!(sbi->s_mount_state & EXT2_VALID_FS))
-		printk ("EXT2-fs warning: mounting unchecked fs, "
-			"running e2fsck is recommended\n");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting unchecked fs, "
+			"running e2fsck is recommended");
 	else if ((sbi->s_mount_state & EXT2_ERROR_FS))
-		printk ("EXT2-fs warning: mounting fs with errors, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: maximal mount count reached, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: checktime reached, "
-			"running e2fsck is recommended\n");
+		(le32_to_cpu(es->s_lastcheck) +
+			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
+		ext2_msg(sb, KERN_WARNING,
+			"warning: checktime reached, "
+			"running e2fsck is recommended");
 	if (!le16_to_cpu(es->s_max_mnt_count))
 		es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
 	le16_add_cpu(&es->s_mnt_count, 1);
 	ext2_write_super(sb);
 	if (test_opt (sb, DEBUG))
-		printk ("[EXT II FS %s, %s, bs=%lu, fs=%lu, gc=%lu, "
-			"bpg=%lu, ipg=%lu, mo=%04lx]\n",
+		ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, "
+			"bpg=%lu, ipg=%lu, mo=%04lx]",
 			EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize,
 			sbi->s_frag_size,
 			sbi->s_groups_count,
@@ -767,7 +785,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	blocksize = sb_min_blocksize(sb, BLOCK_SIZE);
 	if (!blocksize) {
-		printk ("EXT2-fs: unable to set blocksize\n");
+		ext2_msg(sb, KERN_ERR, "unable to set blocksize");
 		goto failed_sbi;
 	}
 
@@ -783,7 +801,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 
 	if (!(bh = sb_bread(sb, logic_sb_block))) {
-		printk ("EXT2-fs: unable to read superblock\n");
+		ext2_msg(sb, KERN_ERR, "unable to read superblock");
 		goto failed_sbi;
 	}
 	/*
@@ -826,7 +844,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	
 	set_opt(sbi->s_mount_opt, RESERVATION);
 
-	if (!parse_options ((char *) data, sbi))
+	if (!parse_options ((char *) data, sbi, sb))
 		goto failed_mount;
 
 	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
@@ -840,8 +858,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
-		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
-		       "running e2fsck is recommended\n");
+		 ext2_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,
@@ -849,16 +868,16 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	features = EXT2_HAS_INCOMPAT_FEATURE(sb, ~EXT2_FEATURE_INCOMPAT_SUPP);
 	if (features) {
-		printk("EXT2-fs: %s: couldn't mount because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR,	"couldn't mount because of "
+		       "unsupported optional features (%x)",
+			le32_to_cpu(features));
 		goto failed_mount;
 	}
 	if (!(sb->s_flags & MS_RDONLY) &&
 	    (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
-		printk("EXT2-fs: %s: couldn't mount RDWR because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR, "couldn't mount RDWR because of "
+		       "unsupported optional features (%x)",
+		       le32_to_cpu(features));
 		goto failed_mount;
 	}
 
@@ -866,7 +885,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (ext2_use_xip(sb) && blocksize != PAGE_SIZE) {
 		if (!silent)
-			printk("XIP: Unsupported blocksize\n");
+			ext2_msg(sb, KERN_ERR, "XIP: Unsupported blocksize");
 		goto failed_mount;
 	}
 
@@ -875,7 +894,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		brelse(bh);
 
 		if (!sb_set_blocksize(sb, blocksize)) {
-			printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
+			ext2_msg(sb, KERN_ERR, "blocksize too small");
 			goto failed_sbi;
 		}
 
@@ -883,14 +902,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		offset = (sb_block*BLOCK_SIZE) % blocksize;
 		bh = sb_bread(sb, logic_sb_block);
 		if(!bh) {
-			printk("EXT2-fs: Couldn't read superblock on "
-			       "2nd try.\n");
+			ext2_msg(sb, KERN_ERR, "Couldn't read superblock on "
+			       "2nd try");
 			goto failed_sbi;
 		}
 		es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
 		sbi->s_es = es;
 		if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
-			printk ("EXT2-fs: Magic mismatch, very weird !\n");
+			ext2_msg(sb, KERN_ERR, "Magic mismatch, very weird !");
 			goto failed_mount;
 		}
 	}
@@ -906,7 +925,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) ||
 		    !is_power_of_2(sbi->s_inode_size) ||
 		    (sbi->s_inode_size > blocksize)) {
-			printk ("EXT2-fs: unsupported inode size: %d\n",
+			ext2_msg(sb, KERN_ERR, "unsupported inode size: %d",
 				sbi->s_inode_size);
 			goto failed_mount;
 		}
@@ -943,29 +962,29 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (sb->s_blocksize != bh->b_size) {
 		if (!silent)
-			printk ("VFS: Unsupported blocksize on dev "
-				"%s.\n", sb->s_id);
+			ext2_msg(sb, KERN_ERR, "VFS: Unsupported blocksize");
 		goto failed_mount;
 	}
 
 	if (sb->s_blocksize != sbi->s_frag_size) {
-		printk ("EXT2-fs: fragsize %lu != blocksize %lu (not supported yet)\n",
+		ext2_msg(sb, KERN_ERR,
+			"fragsize %lu != blocksize %lu (not supported yet)",
 			sbi->s_frag_size, sb->s_blocksize);
 		goto failed_mount;
 	}
 
 	if (sbi->s_blocks_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #blocks per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR, "#blocks per group too big: %lu",
 			sbi->s_blocks_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_frags_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #fragments per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR, "#fragments per group too big: %lu",
 			sbi->s_frags_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_inodes_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #inodes per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR, "#inodes per group too big: %lu",
 			sbi->s_inodes_per_group);
 		goto failed_mount;
 	}
@@ -979,13 +998,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		   EXT2_DESC_PER_BLOCK(sb);
 	sbi->s_group_desc = kmalloc (db_count * sizeof (struct buffer_head *), GFP_KERNEL);
 	if (sbi->s_group_desc == NULL) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "not enough memory");
 		goto failed_mount;
 	}
 	bgl_lock_init(sbi->s_blockgroup_lock);
 	sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
 	if (!sbi->s_debts) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "not enough memory");
 		goto failed_mount_group_desc;
 	}
 	for (i = 0; i < db_count; i++) {
@@ -994,12 +1013,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if (!sbi->s_group_desc[i]) {
 			for (j = 0; j < i; j++)
 				brelse (sbi->s_group_desc[j]);
-			printk ("EXT2-fs: unable to read group descriptors\n");
+			ext2_msg(sb, KERN_ERR,
+				"unable to read group descriptors");
 			goto failed_mount_group_desc;
 		}
 	}
 	if (!ext2_check_descriptors (sb)) {
-		printk ("EXT2-fs: group descriptors corrupted!\n");
+		ext2_msg(sb, KERN_ERR, "group descriptors corrupted");
 		goto failed_mount2;
 	}
 	sbi->s_gdb_count = db_count;
@@ -1032,7 +1052,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 				ext2_count_dirs(sb));
 	}
 	if (err) {
-		printk(KERN_ERR "EXT2-fs: insufficient memory\n");
+		ext2_msg(sb, KERN_ERR, "insufficient memory");
 		goto failed_mount3;
 	}
 	/*
@@ -1048,27 +1068,27 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
+		ext2_msg(sb, KERN_ERR, "corrupt root inode, run e2fsck");
 		goto failed_mount3;
 	}
 
 	sb->s_root = d_alloc_root(root);
 	if (!sb->s_root) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: get root inode failed\n");
+		ext2_msg(sb, KERN_ERR, "get root inode failed");
 		ret = -ENOMEM;
 		goto failed_mount3;
 	}
 	if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
-		ext2_warning(sb, __func__,
-			"mounting ext3 filesystem as ext2");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting ext3 filesystem as ext2");
 	ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);
 	return 0;
 
 cantfind_ext2:
 	if (!silent)
-		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
-		       sb->s_id);
+		ext2_msg(sb, KERN_ERR,
+			"VFS: Can't find an ext2 filesystem");
 	goto failed_mount;
 failed_mount3:
 	percpu_counter_destroy(&sbi->s_freeblocks_counter);
@@ -1170,7 +1190,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	/*
 	 * Allow the "check" option to be passed as a remount option.
 	 */
-	if (!parse_options (data, sbi)) {
+	if (!parse_options (data, sbi, sb)) {
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1182,7 +1202,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 				    EXT2_MOUNT_XIP if not */
 
 	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
-		printk("XIP: Unsupported blocksize\n");
+		ext2_msg(sb, KERN_WARNING, "XIP: Unsupported blocksize");
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1216,9 +1236,10 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 		__le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
 					       ~EXT2_FEATURE_RO_COMPAT_SUPP);
 		if (ret) {
-			printk("EXT2-fs: %s: couldn't remount RDWR because of "
-			       "unsupported optional features (%x).\n",
-			       sb->s_id, le32_to_cpu(ret));
+			ext2_msg(sb, KERN_WARNING,
+				"couldn't remount RDWR because of "
+				"unsupported optional features (%x).",
+				le32_to_cpu(ret));
 			err = -EROFS;
 			goto restore_opts;
 		}

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

* Re: Corrupt superblocks
  2009-11-04 19:21 ` Eric Sandeen
  2009-11-04 20:40   ` [PATCH] make unified logs on ext2 Alexey Fisher
@ 2009-11-04 21:56   ` fabian-buettner
  2009-11-04 21:59     ` Eric Sandeen
  1 sibling, 1 reply; 20+ messages in thread
From: fabian-buettner @ 2009-11-04 21:56 UTC (permalink / raw)
  To: sandeen; +Cc: linux-ext4

> Why do you say you have a corrupted superblock?

Because of this message: fsck.ext4: No such file or directory while trying to 
open /dev/vg/root
/dev/vg/root: The superblock could not be read or does not describe a correct 
ext2 filesystem ... at the end of this message i am told to run e2fsck -b 
8193 <device>

> I suppose I'd try booting a live/rescue cd, and just manually run e2fsck
> against your root device, as a starter - and capture any interesting
>  output.
> 
> Any sort of kernel or fsck logs indicating more of what actually went
> wrong would be Very helpful here.

I just booted into a rescue cd and run e2fsck /dev/vg/root.
surprisingly it said: /dev/vg/root: clean

- fabian

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

* Re: Corrupt superblocks
  2009-11-04 21:56   ` Corrupt superblocks fabian-buettner
@ 2009-11-04 21:59     ` Eric Sandeen
  2009-11-04 22:07       ` fabian-buettner
  0 siblings, 1 reply; 20+ messages in thread
From: Eric Sandeen @ 2009-11-04 21:59 UTC (permalink / raw)
  To: fabian-buettner; +Cc: linux-ext4

fabian-buettner@gmx.de wrote:
>> Why do you say you have a corrupted superblock?
> 
> Because of this message: fsck.ext4: No such file or directory while trying to 
> open /dev/vg/root
> /dev/vg/root: The superblock could not be read or does not describe a correct 
> ext2 filesystem ... at the end of this message i am told to run e2fsck -b 
> 8193 <device>

Right, but:

# e2fsck /dev/a_file_that_i_made_up
e2fsck 1.41.4 (27-Jan-2009)
e2fsck: No such file or directory while trying to open
/dev/a_file_that_i_made_up

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

all that means is /dev/vg/root doesn't exist and e2fsck can't even get
off the ground.  Note the "if the device is valid" part ...

>> I suppose I'd try booting a live/rescue cd, and just manually run e2fsck
>> against your root device, as a starter - and capture any interesting
>>  output.
>>
>> Any sort of kernel or fsck logs indicating more of what actually went
>> wrong would be Very helpful here.
> 
> I just booted into a rescue cd and run e2fsck /dev/vg/root.
> surprisingly it said: /dev/vg/root: clean

so it sounds like your root vg isn't getting assembled properly in your
other situation, which is more of a block device / lvm problem than an
ext4 problem, I think.

-Eric

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

* Re: Corrupt superblocks
  2009-11-04 21:59     ` Eric Sandeen
@ 2009-11-04 22:07       ` fabian-buettner
  2009-11-04 22:24         ` Eric Sandeen
  0 siblings, 1 reply; 20+ messages in thread
From: fabian-buettner @ 2009-11-04 22:07 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: linux-ext4

On Wednesday 04 November 2009 22:59:39 you wrote:
> Right, but:
> 
> # e2fsck /dev/a_file_that_i_made_up
> e2fsck 1.41.4 (27-Jan-2009)
> e2fsck: No such file or directory while trying to open
> /dev/a_file_that_i_made_up
> 
> The superblock could not be read or does not describe a correct ext2
> filesystem.  If the device is valid and it really contains an ext2
> filesystem (and not swap or ufs or something else), then the superblock
> is corrupt, and you might try running e2fsck with an alternate superblock:
>     e2fsck -b 8193 <device>
> 
> all that means is /dev/vg/root doesn't exist and e2fsck can't even get
> off the ground.  Note the "if the device is valid" part ...

I see.

> so it sounds like your root vg isn't getting assembled properly in your
> other situation, which is more of a block device / lvm problem than an
> ext4 problem, I think.
> 
> -Eric
> 

So maybe i did harm my fs by running e2fsck -b?
Because running fsck afterwards gave me a lot of those Group descriptor 
checksum fixing proposals?
I am surprised that e2fsck just told me that my fs is clean.

Do you have a clue why an entry in my /etc/fsab like
/dev/vg/root            /               ext4            noatime         0 0
works, while
/dev/vg/root            /               ext4            noatime         0 1
doesnt?

- fabian

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

* Re: Corrupt superblocks
  2009-11-04 22:07       ` fabian-buettner
@ 2009-11-04 22:24         ` Eric Sandeen
  2009-11-09 20:18           ` fabian-buettner
  0 siblings, 1 reply; 20+ messages in thread
From: Eric Sandeen @ 2009-11-04 22:24 UTC (permalink / raw)
  To: fabian-buettner; +Cc: linux-ext4

fabian-buettner@gmx.de wrote:

> So maybe i did harm my fs by running e2fsck -b?

If /dev/vg/root didn't exist, no filesystem was harmed in the process I
am sure.  :)

> Because running fsck afterwards gave me a lot of those Group descriptor 
> checksum fixing proposals?
> I am surprised that e2fsck just told me that my fs is clean.
> 
> Do you have a clue why an entry in my /etc/fsab like
> /dev/vg/root            /               ext4            noatime         0 0

This tells the initscripts not to try running fsck on /dev/vg/root at
all (see man fstab)

> works, while
> /dev/vg/root            /               ext4            noatime         0 1
> doesnt?

These are probably questions for your distribution; it sounds like the
initscripts are not able to point e2fsck at the proper device, at the
proper time...

-Eric

> - fabian


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

* Re: [PATCH] make unified logs on ext2
  2009-11-04 20:40   ` [PATCH] make unified logs on ext2 Alexey Fisher
@ 2009-11-05  4:50     ` Andreas Dilger
  2009-11-05  7:33       ` [PATCH] Unify log messages in ext2 Alexey Fisher
  0 siblings, 1 reply; 20+ messages in thread
From: Andreas Dilger @ 2009-11-05  4:50 UTC (permalink / raw)
  To: Alexey Fisher; +Cc: Eric Sandeen, linux-ext4

On 2009-11-04, at 13:40, Alexey Fisher wrote:
> i trying to make messages produced by ext2 more unified. It should be
> easy to parse.

This patch follows the ext4_msg() changes in ext4, so at least it is
not inventing something different.

Reviewed-by: Andreas Dilger <adilger@sun.com>

Minor note:
> @@ -840,8 +858,9 @@ static int ext2_fill_super(struct super_block  
> *sb, void  *data, int silent)
>  	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
> -		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
> -		       "running e2fsck is recommended\n");
> +		 ext2_msg(sb, KERN_WARNING,
> +			"warning: feature flags set on rev 0 fs, "
> +			"running e2fsck is recommended");

It looks like you have an extra space before the ext2_msg() here.

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.


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

* [PATCH] Unify log messages in ext2
  2009-11-05  4:50     ` Andreas Dilger
@ 2009-11-05  7:33       ` Alexey Fisher
  2009-11-06 14:53         ` Alexey Fisher
  0 siblings, 1 reply; 20+ messages in thread
From: Alexey Fisher @ 2009-11-05  7:33 UTC (permalink / raw)
  To: Eric Sandeen, Andreas Dilger, linux-ext4; +Cc: Alexey Fisher

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

dmesg before patch:
[ 4893.684892] reservations ON
[ 4893.684896] xip option not supported
[ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
[ 4893.684964] EXT2-fs warning: maximal mount count reached, running
e2fsck is recommended
[ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

dmesg after patch:
[ 4893.684892] EXT2-fs (loop0): reservations ON
[ 4893.684896] EXT2-fs (loop0): xip option not supported
[ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
ext2
[ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
running e2fsck is recommended
[ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
Reviewed-by: Andreas Dilger <adilger@sun.com>
---
 fs/ext2/ext2.h  |    2 +
 fs/ext2/super.c |  151 +++++++++++++++++++++++++++++++------------------------
 2 files changed, 88 insertions(+), 65 deletions(-)

diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 9a8a8e2..29f65c5 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -142,6 +142,8 @@ struct dentry *ext2_get_parent(struct dentry *child);
 /* super.c */
 extern void ext2_error (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
+extern void ext2_msg(struct super_block *, const char *, const char *, ...)
+	__attribute__ ((format (printf, 3, 4)));
 extern void ext2_warning (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
 extern void ext2_update_dynamic_rev (struct super_block *sb);
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 1a9ffee..105fcd1 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -58,26 +58,38 @@ void ext2_error (struct super_block * sb, const char * function,
 	}
 
 	va_start(args, fmt);
-	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
+	ext2_msg(sb, KERN_CRIT, "error %s", function);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
 
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT2-fs panic from previous error\n");
+		panic("EXT2-fs: panic from previous error\n");
 	if (test_opt(sb, ERRORS_RO)) {
-		printk("Remounting filesystem read-only\n");
+		ext2_msg(sb, KERN_CRIT, "Remounting filesystem read-only");
 		sb->s_flags |= MS_RDONLY;
 	}
 }
 
+void ext2_msg(struct super_block *sb, const char *prefix,
+		const char *fmt, ...)
+{
+	va_list args;
+
+	va_start(args, fmt);
+	printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
+	vprintk(fmt, args);
+	printk("\n");
+	va_end(args);
+}
+
 void ext2_warning (struct super_block * sb, const char * function,
 		   const char * fmt, ...)
 {
 	va_list args;
 
 	va_start(args, fmt);
-	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
+	printk(KERN_WARNING "EXT2-fs (%s) warning: %s: ",
 	       sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
@@ -420,7 +432,7 @@ static const match_table_t tokens = {
 };
 
 static int parse_options (char * options,
-			  struct ext2_sb_info *sbi)
+			  struct ext2_sb_info *sbi, struct super_block *sb)
 {
 	char * p;
 	substring_t args[MAX_OPT_ARGS];
@@ -505,7 +517,8 @@ static int parse_options (char * options,
 #else
 		case Opt_user_xattr:
 		case Opt_nouser_xattr:
-			printk("EXT2 (no)user_xattr options not supported\n");
+			ext2_msg(sb, KERN_INFO, "(no)user_xattr options"
+				"not supported");
 			break;
 #endif
 #ifdef CONFIG_EXT2_FS_POSIX_ACL
@@ -518,14 +531,15 @@ static int parse_options (char * options,
 #else
 		case Opt_acl:
 		case Opt_noacl:
-			printk("EXT2 (no)acl options not supported\n");
+			ext2_msg(sb, KERN_INFO,
+				"(no)acl options not supported");
 			break;
 #endif
 		case Opt_xip:
 #ifdef CONFIG_EXT2_FS_XIP
 			set_opt (sbi->s_mount_opt, XIP);
 #else
-			printk("EXT2 xip option not supported\n");
+			ext2_msg(sb, KERN_INFO, "xip option not supported");
 #endif
 			break;
 
@@ -542,19 +556,18 @@ static int parse_options (char * options,
 		case Opt_quota:
 		case Opt_usrquota:
 		case Opt_grpquota:
-			printk(KERN_ERR
-				"EXT2-fs: quota operations not supported.\n");
-
+			ext2_msg(sb, KERN_INFO,
+				"quota operations not supported");
 			break;
 #endif
 
 		case Opt_reservation:
 			set_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations ON\n");
+			ext2_msg(sb, KERN_INFO, "reservations ON");
 			break;
 		case Opt_noreservation:
 			clear_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations OFF\n");
+			ext2_msg(sb, KERN_INFO, "reservations OFF");
 			break;
 		case Opt_ignore:
 			break;
@@ -573,34 +586,39 @@ static int ext2_setup_super (struct super_block * sb,
 	struct ext2_sb_info *sbi = EXT2_SB(sb);
 
 	if (le32_to_cpu(es->s_rev_level) > EXT2_MAX_SUPP_REV) {
-		printk ("EXT2-fs warning: revision level too high, "
-			"forcing read-only mode\n");
+		ext2_msg(sb, KERN_ERR,
+			"revision level too high, forcing read-only mode");
 		res = MS_RDONLY;
 	}
 	if (read_only)
 		return res;
 	if (!(sbi->s_mount_state & EXT2_VALID_FS))
-		printk ("EXT2-fs warning: mounting unchecked fs, "
-			"running e2fsck is recommended\n");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting unchecked fs, "
+			"running e2fsck is recommended");
 	else if ((sbi->s_mount_state & EXT2_ERROR_FS))
-		printk ("EXT2-fs warning: mounting fs with errors, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: maximal mount count reached, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: checktime reached, "
-			"running e2fsck is recommended\n");
+		(le32_to_cpu(es->s_lastcheck) +
+			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
+		ext2_msg(sb, KERN_WARNING,
+			"warning: checktime reached, "
+			"running e2fsck is recommended");
 	if (!le16_to_cpu(es->s_max_mnt_count))
 		es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
 	le16_add_cpu(&es->s_mnt_count, 1);
 	ext2_write_super(sb);
 	if (test_opt (sb, DEBUG))
-		printk ("[EXT II FS %s, %s, bs=%lu, fs=%lu, gc=%lu, "
-			"bpg=%lu, ipg=%lu, mo=%04lx]\n",
+		ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, "
+			"bpg=%lu, ipg=%lu, mo=%04lx]",
 			EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize,
 			sbi->s_frag_size,
 			sbi->s_groups_count,
@@ -767,7 +785,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	blocksize = sb_min_blocksize(sb, BLOCK_SIZE);
 	if (!blocksize) {
-		printk ("EXT2-fs: unable to set blocksize\n");
+		ext2_msg(sb, KERN_ERR, "unable to set blocksize");
 		goto failed_sbi;
 	}
 
@@ -783,7 +801,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 
 	if (!(bh = sb_bread(sb, logic_sb_block))) {
-		printk ("EXT2-fs: unable to read superblock\n");
+		ext2_msg(sb, KERN_ERR, "unable to read superblock");
 		goto failed_sbi;
 	}
 	/*
@@ -826,7 +844,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	
 	set_opt(sbi->s_mount_opt, RESERVATION);
 
-	if (!parse_options ((char *) data, sbi))
+	if (!parse_options((char *) data, sbi, sb))
 		goto failed_mount;
 
 	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
@@ -840,8 +858,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
-		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
-		       "running e2fsck is recommended\n");
+		ext2_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,
@@ -849,16 +868,16 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	features = EXT2_HAS_INCOMPAT_FEATURE(sb, ~EXT2_FEATURE_INCOMPAT_SUPP);
 	if (features) {
-		printk("EXT2-fs: %s: couldn't mount because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR,	"couldn't mount because of "
+		       "unsupported optional features (%x)",
+			le32_to_cpu(features));
 		goto failed_mount;
 	}
 	if (!(sb->s_flags & MS_RDONLY) &&
 	    (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
-		printk("EXT2-fs: %s: couldn't mount RDWR because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR, "couldn't mount RDWR because of "
+		       "unsupported optional features (%x)",
+		       le32_to_cpu(features));
 		goto failed_mount;
 	}
 
@@ -866,7 +885,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (ext2_use_xip(sb) && blocksize != PAGE_SIZE) {
 		if (!silent)
-			printk("XIP: Unsupported blocksize\n");
+			ext2_msg(sb, KERN_ERR, "XIP: Unsupported blocksize");
 		goto failed_mount;
 	}
 
@@ -875,7 +894,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		brelse(bh);
 
 		if (!sb_set_blocksize(sb, blocksize)) {
-			printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
+			ext2_msg(sb, KERN_ERR, "blocksize too small");
 			goto failed_sbi;
 		}
 
@@ -883,14 +902,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		offset = (sb_block*BLOCK_SIZE) % blocksize;
 		bh = sb_bread(sb, logic_sb_block);
 		if(!bh) {
-			printk("EXT2-fs: Couldn't read superblock on "
-			       "2nd try.\n");
+			ext2_msg(sb, KERN_ERR, "Couldn't read superblock on "
+			       "2nd try");
 			goto failed_sbi;
 		}
 		es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
 		sbi->s_es = es;
 		if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
-			printk ("EXT2-fs: Magic mismatch, very weird !\n");
+			ext2_msg(sb, KERN_ERR, "Magic mismatch, very weird !");
 			goto failed_mount;
 		}
 	}
@@ -906,7 +925,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) ||
 		    !is_power_of_2(sbi->s_inode_size) ||
 		    (sbi->s_inode_size > blocksize)) {
-			printk ("EXT2-fs: unsupported inode size: %d\n",
+			ext2_msg(sb, KERN_ERR, "unsupported inode size: %d",
 				sbi->s_inode_size);
 			goto failed_mount;
 		}
@@ -943,29 +962,29 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (sb->s_blocksize != bh->b_size) {
 		if (!silent)
-			printk ("VFS: Unsupported blocksize on dev "
-				"%s.\n", sb->s_id);
+			ext2_msg(sb, KERN_ERR, "VFS: Unsupported blocksize");
 		goto failed_mount;
 	}
 
 	if (sb->s_blocksize != sbi->s_frag_size) {
-		printk ("EXT2-fs: fragsize %lu != blocksize %lu (not supported yet)\n",
+		ext2_msg(sb, KERN_ERR,
+			"fragsize %lu != blocksize %lu (not supported yet)",
 			sbi->s_frag_size, sb->s_blocksize);
 		goto failed_mount;
 	}
 
 	if (sbi->s_blocks_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #blocks per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR, "#blocks per group too big: %lu",
 			sbi->s_blocks_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_frags_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #fragments per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR, "#fragments per group too big: %lu",
 			sbi->s_frags_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_inodes_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #inodes per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR, "#inodes per group too big: %lu",
 			sbi->s_inodes_per_group);
 		goto failed_mount;
 	}
@@ -979,13 +998,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		   EXT2_DESC_PER_BLOCK(sb);
 	sbi->s_group_desc = kmalloc (db_count * sizeof (struct buffer_head *), GFP_KERNEL);
 	if (sbi->s_group_desc == NULL) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "not enough memory");
 		goto failed_mount;
 	}
 	bgl_lock_init(sbi->s_blockgroup_lock);
 	sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
 	if (!sbi->s_debts) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "not enough memory");
 		goto failed_mount_group_desc;
 	}
 	for (i = 0; i < db_count; i++) {
@@ -994,12 +1013,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if (!sbi->s_group_desc[i]) {
 			for (j = 0; j < i; j++)
 				brelse (sbi->s_group_desc[j]);
-			printk ("EXT2-fs: unable to read group descriptors\n");
+			ext2_msg(sb, KERN_ERR,
+				"unable to read group descriptors");
 			goto failed_mount_group_desc;
 		}
 	}
 	if (!ext2_check_descriptors (sb)) {
-		printk ("EXT2-fs: group descriptors corrupted!\n");
+		ext2_msg(sb, KERN_ERR, "group descriptors corrupted");
 		goto failed_mount2;
 	}
 	sbi->s_gdb_count = db_count;
@@ -1032,7 +1052,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 				ext2_count_dirs(sb));
 	}
 	if (err) {
-		printk(KERN_ERR "EXT2-fs: insufficient memory\n");
+		ext2_msg(sb, KERN_ERR, "insufficient memory");
 		goto failed_mount3;
 	}
 	/*
@@ -1048,27 +1068,27 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
+		ext2_msg(sb, KERN_ERR, "corrupt root inode, run e2fsck");
 		goto failed_mount3;
 	}
 
 	sb->s_root = d_alloc_root(root);
 	if (!sb->s_root) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: get root inode failed\n");
+		ext2_msg(sb, KERN_ERR, "get root inode failed");
 		ret = -ENOMEM;
 		goto failed_mount3;
 	}
 	if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
-		ext2_warning(sb, __func__,
-			"mounting ext3 filesystem as ext2");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting ext3 filesystem as ext2");
 	ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);
 	return 0;
 
 cantfind_ext2:
 	if (!silent)
-		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
-		       sb->s_id);
+		ext2_msg(sb, KERN_ERR,
+			"VFS: Can't find an ext2 filesystem");
 	goto failed_mount;
 failed_mount3:
 	percpu_counter_destroy(&sbi->s_freeblocks_counter);
@@ -1170,7 +1190,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	/*
 	 * Allow the "check" option to be passed as a remount option.
 	 */
-	if (!parse_options (data, sbi)) {
+	if (!parse_options(data, sbi, sb)) {
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1182,7 +1202,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 				    EXT2_MOUNT_XIP if not */
 
 	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
-		printk("XIP: Unsupported blocksize\n");
+		ext2_msg(sb, KERN_WARNING, "XIP: Unsupported blocksize");
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1216,9 +1236,10 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 		__le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
 					       ~EXT2_FEATURE_RO_COMPAT_SUPP);
 		if (ret) {
-			printk("EXT2-fs: %s: couldn't remount RDWR because of "
-			       "unsupported optional features (%x).\n",
-			       sb->s_id, le32_to_cpu(ret));
+			ext2_msg(sb, KERN_WARNING,
+				"couldn't remount RDWR because of "
+				"unsupported optional features (%x).",
+				le32_to_cpu(ret));
 			err = -EROFS;
 			goto restore_opts;
 		}
-- 
1.6.3.3


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

* Re: [PATCH] Unify log messages in ext2
  2009-11-05  7:33       ` [PATCH] Unify log messages in ext2 Alexey Fisher
@ 2009-11-06 14:53         ` Alexey Fisher
  2009-11-17 21:23           ` Jan Kara
  0 siblings, 1 reply; 20+ messages in thread
From: Alexey Fisher @ 2009-11-06 14:53 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Andreas Dilger, linux-ext4, Theodore Tso

Any comments for this patch?

Alexey


Am Donnerstag, den 05.11.2009, 08:33 +0100 schrieb Alexey Fisher:
> make messages produced by ext2 more unified. It should be
> easy to parse.
> 
> dmesg before patch:
> [ 4893.684892] reservations ON
> [ 4893.684896] xip option not supported
> [ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
> [ 4893.684964] EXT2-fs warning: maximal mount count reached, running
> e2fsck is recommended
> [ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> bpg=8192, ipg=1280, mo=80010]
> 
> dmesg after patch:
> [ 4893.684892] EXT2-fs (loop0): reservations ON
> [ 4893.684896] EXT2-fs (loop0): xip option not supported
> [ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
> ext2
> [ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
> running e2fsck is recommended
> [ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> bpg=8192, ipg=1280, mo=80010]
> 
> Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
> Reviewed-by: Andreas Dilger <adilger@sun.com>
> ---
>  fs/ext2/ext2.h  |    2 +
>  fs/ext2/super.c |  151 +++++++++++++++++++++++++++++++------------------------
>  2 files changed, 88 insertions(+), 65 deletions(-)
> 
> diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
> index 9a8a8e2..29f65c5 100644
> --- a/fs/ext2/ext2.h
> +++ b/fs/ext2/ext2.h
> @@ -142,6 +142,8 @@ struct dentry *ext2_get_parent(struct dentry *child);
>  /* super.c */
>  extern void ext2_error (struct super_block *, const char *, const char *, ...)
>  	__attribute__ ((format (printf, 3, 4)));
> +extern void ext2_msg(struct super_block *, const char *, const char *, ...)
> +	__attribute__ ((format (printf, 3, 4)));
>  extern void ext2_warning (struct super_block *, const char *, const char *, ...)
>  	__attribute__ ((format (printf, 3, 4)));
>  extern void ext2_update_dynamic_rev (struct super_block *sb);
> diff --git a/fs/ext2/super.c b/fs/ext2/super.c
> index 1a9ffee..105fcd1 100644
> --- a/fs/ext2/super.c
> +++ b/fs/ext2/super.c
> @@ -58,26 +58,38 @@ void ext2_error (struct super_block * sb, const char * function,
>  	}
>  
>  	va_start(args, fmt);
> -	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
> +	ext2_msg(sb, KERN_CRIT, "error %s", function);
>  	vprintk(fmt, args);
>  	printk("\n");
>  	va_end(args);
>  
>  	if (test_opt(sb, ERRORS_PANIC))
> -		panic("EXT2-fs panic from previous error\n");
> +		panic("EXT2-fs: panic from previous error\n");
>  	if (test_opt(sb, ERRORS_RO)) {
> -		printk("Remounting filesystem read-only\n");
> +		ext2_msg(sb, KERN_CRIT, "Remounting filesystem read-only");
>  		sb->s_flags |= MS_RDONLY;
>  	}
>  }
>  
> +void ext2_msg(struct super_block *sb, const char *prefix,
> +		const char *fmt, ...)
> +{
> +	va_list args;
> +
> +	va_start(args, fmt);
> +	printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
> +	vprintk(fmt, args);
> +	printk("\n");
> +	va_end(args);
> +}
> +
>  void ext2_warning (struct super_block * sb, const char * function,
>  		   const char * fmt, ...)
>  {
>  	va_list args;
>  
>  	va_start(args, fmt);
> -	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
> +	printk(KERN_WARNING "EXT2-fs (%s) warning: %s: ",
>  	       sb->s_id, function);
>  	vprintk(fmt, args);
>  	printk("\n");
> @@ -420,7 +432,7 @@ static const match_table_t tokens = {
>  };
>  
>  static int parse_options (char * options,
> -			  struct ext2_sb_info *sbi)
> +			  struct ext2_sb_info *sbi, struct super_block *sb)
>  {
>  	char * p;
>  	substring_t args[MAX_OPT_ARGS];
> @@ -505,7 +517,8 @@ static int parse_options (char * options,
>  #else
>  		case Opt_user_xattr:
>  		case Opt_nouser_xattr:
> -			printk("EXT2 (no)user_xattr options not supported\n");
> +			ext2_msg(sb, KERN_INFO, "(no)user_xattr options"
> +				"not supported");
>  			break;
>  #endif
>  #ifdef CONFIG_EXT2_FS_POSIX_ACL
> @@ -518,14 +531,15 @@ static int parse_options (char * options,
>  #else
>  		case Opt_acl:
>  		case Opt_noacl:
> -			printk("EXT2 (no)acl options not supported\n");
> +			ext2_msg(sb, KERN_INFO,
> +				"(no)acl options not supported");
>  			break;
>  #endif
>  		case Opt_xip:
>  #ifdef CONFIG_EXT2_FS_XIP
>  			set_opt (sbi->s_mount_opt, XIP);
>  #else
> -			printk("EXT2 xip option not supported\n");
> +			ext2_msg(sb, KERN_INFO, "xip option not supported");
>  #endif
>  			break;
>  
> @@ -542,19 +556,18 @@ static int parse_options (char * options,
>  		case Opt_quota:
>  		case Opt_usrquota:
>  		case Opt_grpquota:
> -			printk(KERN_ERR
> -				"EXT2-fs: quota operations not supported.\n");
> -
> +			ext2_msg(sb, KERN_INFO,
> +				"quota operations not supported");
>  			break;
>  #endif
>  
>  		case Opt_reservation:
>  			set_opt(sbi->s_mount_opt, RESERVATION);
> -			printk("reservations ON\n");
> +			ext2_msg(sb, KERN_INFO, "reservations ON");
>  			break;
>  		case Opt_noreservation:
>  			clear_opt(sbi->s_mount_opt, RESERVATION);
> -			printk("reservations OFF\n");
> +			ext2_msg(sb, KERN_INFO, "reservations OFF");
>  			break;
>  		case Opt_ignore:
>  			break;
> @@ -573,34 +586,39 @@ static int ext2_setup_super (struct super_block * sb,
>  	struct ext2_sb_info *sbi = EXT2_SB(sb);
>  
>  	if (le32_to_cpu(es->s_rev_level) > EXT2_MAX_SUPP_REV) {
> -		printk ("EXT2-fs warning: revision level too high, "
> -			"forcing read-only mode\n");
> +		ext2_msg(sb, KERN_ERR,
> +			"revision level too high, forcing read-only mode");
>  		res = MS_RDONLY;
>  	}
>  	if (read_only)
>  		return res;
>  	if (!(sbi->s_mount_state & EXT2_VALID_FS))
> -		printk ("EXT2-fs warning: mounting unchecked fs, "
> -			"running e2fsck is recommended\n");
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: mounting unchecked fs, "
> +			"running e2fsck is recommended");
>  	else if ((sbi->s_mount_state & EXT2_ERROR_FS))
> -		printk ("EXT2-fs warning: mounting fs with errors, "
> -			"running e2fsck is recommended\n");
> +		ext2_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 ("EXT2-fs warning: maximal mount count reached, "
> -			"running e2fsck is recommended\n");
> +		ext2_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 ("EXT2-fs warning: checktime reached, "
> -			"running e2fsck is recommended\n");
> +		(le32_to_cpu(es->s_lastcheck) +
> +			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: checktime reached, "
> +			"running e2fsck is recommended");
>  	if (!le16_to_cpu(es->s_max_mnt_count))
>  		es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
>  	le16_add_cpu(&es->s_mnt_count, 1);
>  	ext2_write_super(sb);
>  	if (test_opt (sb, DEBUG))
> -		printk ("[EXT II FS %s, %s, bs=%lu, fs=%lu, gc=%lu, "
> -			"bpg=%lu, ipg=%lu, mo=%04lx]\n",
> +		ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, "
> +			"bpg=%lu, ipg=%lu, mo=%04lx]",
>  			EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize,
>  			sbi->s_frag_size,
>  			sbi->s_groups_count,
> @@ -767,7 +785,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	 */
>  	blocksize = sb_min_blocksize(sb, BLOCK_SIZE);
>  	if (!blocksize) {
> -		printk ("EXT2-fs: unable to set blocksize\n");
> +		ext2_msg(sb, KERN_ERR, "unable to set blocksize");
>  		goto failed_sbi;
>  	}
>  
> @@ -783,7 +801,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	}
>  
>  	if (!(bh = sb_bread(sb, logic_sb_block))) {
> -		printk ("EXT2-fs: unable to read superblock\n");
> +		ext2_msg(sb, KERN_ERR, "unable to read superblock");
>  		goto failed_sbi;
>  	}
>  	/*
> @@ -826,7 +844,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	
>  	set_opt(sbi->s_mount_opt, RESERVATION);
>  
> -	if (!parse_options ((char *) data, sbi))
> +	if (!parse_options((char *) data, sbi, sb))
>  		goto failed_mount;
>  
>  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
> @@ -840,8 +858,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
> -		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
> -		       "running e2fsck is recommended\n");
> +		ext2_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,
> @@ -849,16 +868,16 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	 */
>  	features = EXT2_HAS_INCOMPAT_FEATURE(sb, ~EXT2_FEATURE_INCOMPAT_SUPP);
>  	if (features) {
> -		printk("EXT2-fs: %s: couldn't mount because of "
> -		       "unsupported optional features (%x).\n",
> -		       sb->s_id, le32_to_cpu(features));
> +		ext2_msg(sb, KERN_ERR,	"couldn't mount because of "
> +		       "unsupported optional features (%x)",
> +			le32_to_cpu(features));
>  		goto failed_mount;
>  	}
>  	if (!(sb->s_flags & MS_RDONLY) &&
>  	    (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
> -		printk("EXT2-fs: %s: couldn't mount RDWR because of "
> -		       "unsupported optional features (%x).\n",
> -		       sb->s_id, le32_to_cpu(features));
> +		ext2_msg(sb, KERN_ERR, "couldn't mount RDWR because of "
> +		       "unsupported optional features (%x)",
> +		       le32_to_cpu(features));
>  		goto failed_mount;
>  	}
>  
> @@ -866,7 +885,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  
>  	if (ext2_use_xip(sb) && blocksize != PAGE_SIZE) {
>  		if (!silent)
> -			printk("XIP: Unsupported blocksize\n");
> +			ext2_msg(sb, KERN_ERR, "XIP: Unsupported blocksize");
>  		goto failed_mount;
>  	}
>  
> @@ -875,7 +894,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		brelse(bh);
>  
>  		if (!sb_set_blocksize(sb, blocksize)) {
> -			printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
> +			ext2_msg(sb, KERN_ERR, "blocksize too small");
>  			goto failed_sbi;
>  		}
>  
> @@ -883,14 +902,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		offset = (sb_block*BLOCK_SIZE) % blocksize;
>  		bh = sb_bread(sb, logic_sb_block);
>  		if(!bh) {
> -			printk("EXT2-fs: Couldn't read superblock on "
> -			       "2nd try.\n");
> +			ext2_msg(sb, KERN_ERR, "Couldn't read superblock on "
> +			       "2nd try");
>  			goto failed_sbi;
>  		}
>  		es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
>  		sbi->s_es = es;
>  		if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
> -			printk ("EXT2-fs: Magic mismatch, very weird !\n");
> +			ext2_msg(sb, KERN_ERR, "Magic mismatch, very weird !");
>  			goto failed_mount;
>  		}
>  	}
> @@ -906,7 +925,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) ||
>  		    !is_power_of_2(sbi->s_inode_size) ||
>  		    (sbi->s_inode_size > blocksize)) {
> -			printk ("EXT2-fs: unsupported inode size: %d\n",
> +			ext2_msg(sb, KERN_ERR, "unsupported inode size: %d",
>  				sbi->s_inode_size);
>  			goto failed_mount;
>  		}
> @@ -943,29 +962,29 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  
>  	if (sb->s_blocksize != bh->b_size) {
>  		if (!silent)
> -			printk ("VFS: Unsupported blocksize on dev "
> -				"%s.\n", sb->s_id);
> +			ext2_msg(sb, KERN_ERR, "VFS: Unsupported blocksize");
>  		goto failed_mount;
>  	}
>  
>  	if (sb->s_blocksize != sbi->s_frag_size) {
> -		printk ("EXT2-fs: fragsize %lu != blocksize %lu (not supported yet)\n",
> +		ext2_msg(sb, KERN_ERR,
> +			"fragsize %lu != blocksize %lu (not supported yet)",
>  			sbi->s_frag_size, sb->s_blocksize);
>  		goto failed_mount;
>  	}
>  
>  	if (sbi->s_blocks_per_group > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #blocks per group too big: %lu\n",
> +		ext2_msg(sb, KERN_ERR, "#blocks per group too big: %lu",
>  			sbi->s_blocks_per_group);
>  		goto failed_mount;
>  	}
>  	if (sbi->s_frags_per_group > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #fragments per group too big: %lu\n",
> +		ext2_msg(sb, KERN_ERR, "#fragments per group too big: %lu",
>  			sbi->s_frags_per_group);
>  		goto failed_mount;
>  	}
>  	if (sbi->s_inodes_per_group > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #inodes per group too big: %lu\n",
> +		ext2_msg(sb, KERN_ERR, "#inodes per group too big: %lu",
>  			sbi->s_inodes_per_group);
>  		goto failed_mount;
>  	}
> @@ -979,13 +998,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		   EXT2_DESC_PER_BLOCK(sb);
>  	sbi->s_group_desc = kmalloc (db_count * sizeof (struct buffer_head *), GFP_KERNEL);
>  	if (sbi->s_group_desc == NULL) {
> -		printk ("EXT2-fs: not enough memory\n");
> +		ext2_msg(sb, KERN_ERR, "not enough memory");
>  		goto failed_mount;
>  	}
>  	bgl_lock_init(sbi->s_blockgroup_lock);
>  	sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
>  	if (!sbi->s_debts) {
> -		printk ("EXT2-fs: not enough memory\n");
> +		ext2_msg(sb, KERN_ERR, "not enough memory");
>  		goto failed_mount_group_desc;
>  	}
>  	for (i = 0; i < db_count; i++) {
> @@ -994,12 +1013,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		if (!sbi->s_group_desc[i]) {
>  			for (j = 0; j < i; j++)
>  				brelse (sbi->s_group_desc[j]);
> -			printk ("EXT2-fs: unable to read group descriptors\n");
> +			ext2_msg(sb, KERN_ERR,
> +				"unable to read group descriptors");
>  			goto failed_mount_group_desc;
>  		}
>  	}
>  	if (!ext2_check_descriptors (sb)) {
> -		printk ("EXT2-fs: group descriptors corrupted!\n");
> +		ext2_msg(sb, KERN_ERR, "group descriptors corrupted");
>  		goto failed_mount2;
>  	}
>  	sbi->s_gdb_count = db_count;
> @@ -1032,7 +1052,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  				ext2_count_dirs(sb));
>  	}
>  	if (err) {
> -		printk(KERN_ERR "EXT2-fs: insufficient memory\n");
> +		ext2_msg(sb, KERN_ERR, "insufficient memory");
>  		goto failed_mount3;
>  	}
>  	/*
> @@ -1048,27 +1068,27 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	}
>  	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
>  		iput(root);
> -		printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
> +		ext2_msg(sb, KERN_ERR, "corrupt root inode, run e2fsck");
>  		goto failed_mount3;
>  	}
>  
>  	sb->s_root = d_alloc_root(root);
>  	if (!sb->s_root) {
>  		iput(root);
> -		printk(KERN_ERR "EXT2-fs: get root inode failed\n");
> +		ext2_msg(sb, KERN_ERR, "get root inode failed");
>  		ret = -ENOMEM;
>  		goto failed_mount3;
>  	}
>  	if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
> -		ext2_warning(sb, __func__,
> -			"mounting ext3 filesystem as ext2");
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: mounting ext3 filesystem as ext2");
>  	ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);
>  	return 0;
>  
>  cantfind_ext2:
>  	if (!silent)
> -		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
> -		       sb->s_id);
> +		ext2_msg(sb, KERN_ERR,
> +			"VFS: Can't find an ext2 filesystem");
>  	goto failed_mount;
>  failed_mount3:
>  	percpu_counter_destroy(&sbi->s_freeblocks_counter);
> @@ -1170,7 +1190,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  	/*
>  	 * Allow the "check" option to be passed as a remount option.
>  	 */
> -	if (!parse_options (data, sbi)) {
> +	if (!parse_options(data, sbi, sb)) {
>  		err = -EINVAL;
>  		goto restore_opts;
>  	}
> @@ -1182,7 +1202,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  				    EXT2_MOUNT_XIP if not */
>  
>  	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
> -		printk("XIP: Unsupported blocksize\n");
> +		ext2_msg(sb, KERN_WARNING, "XIP: Unsupported blocksize");
>  		err = -EINVAL;
>  		goto restore_opts;
>  	}
> @@ -1216,9 +1236,10 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  		__le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
>  					       ~EXT2_FEATURE_RO_COMPAT_SUPP);
>  		if (ret) {
> -			printk("EXT2-fs: %s: couldn't remount RDWR because of "
> -			       "unsupported optional features (%x).\n",
> -			       sb->s_id, le32_to_cpu(ret));
> +			ext2_msg(sb, KERN_WARNING,
> +				"couldn't remount RDWR because of "
> +				"unsupported optional features (%x).",
> +				le32_to_cpu(ret));
>  			err = -EROFS;
>  			goto restore_opts;
>  		}



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

* Re: Corrupt superblocks
  2009-11-04 22:24         ` Eric Sandeen
@ 2009-11-09 20:18           ` fabian-buettner
  0 siblings, 0 replies; 20+ messages in thread
From: fabian-buettner @ 2009-11-09 20:18 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: linux-ext4

On Wednesday 04 November 2009 23:24:04 you wrote:
> This tells the initscripts not to try running fsck on /dev/vg/root at
> all (see man fstab)
> 
> > works, while
> > /dev/vg/root            /               ext4            noatime         0
> > 1 doesnt?
> 
> These are probably questions for your distribution; it sounds like the
> initscripts are not able to point e2fsck at the proper device, at the
> proper time...

Thank you for pointing me in the right direction. I had to upgrade to 
baselayout 2 to get it working correctly.

- fabian

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

* Re: [PATCH] Unify log messages in ext2
  2009-11-06 14:53         ` Alexey Fisher
@ 2009-11-17 21:23           ` Jan Kara
  2009-11-18 19:26             ` Alexey Fisher
  2009-11-19 11:17             ` [PATCH v2] " Alexey Fisher
  0 siblings, 2 replies; 20+ messages in thread
From: Jan Kara @ 2009-11-17 21:23 UTC (permalink / raw)
  To: Alexey Fisher; +Cc: Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso

  Hi,

  overall I like the patch. A few comments are below. When you fix them,
I can take care of merging the patch (please CC me on the posting so
that I don't miss it in the mailing list).

> Am Donnerstag, den 05.11.2009, 08:33 +0100 schrieb Alexey Fisher:
> > make messages produced by ext2 more unified. It should be
> > easy to parse.
> > 
> > dmesg before patch:
> > [ 4893.684892] reservations ON
> > [ 4893.684896] xip option not supported
> > [ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
> > [ 4893.684964] EXT2-fs warning: maximal mount count reached, running
> > e2fsck is recommended
> > [ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> > bpg=8192, ipg=1280, mo=80010]
> > 
> > dmesg after patch:
> > [ 4893.684892] EXT2-fs (loop0): reservations ON
> > [ 4893.684896] EXT2-fs (loop0): xip option not supported
> > [ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
> > ext2
> > [ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
> > running e2fsck is recommended
> > [ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> > bpg=8192, ipg=1280, mo=80010]
> > 
> > Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
> > Reviewed-by: Andreas Dilger <adilger@sun.com>
> > ---
> >  fs/ext2/ext2.h  |    2 +
> >  fs/ext2/super.c |  151 +++++++++++++++++++++++++++++++------------------------
> >  2 files changed, 88 insertions(+), 65 deletions(-)
> > 
> > diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
> > index 9a8a8e2..29f65c5 100644
> > --- a/fs/ext2/ext2.h
> > +++ b/fs/ext2/ext2.h
> > @@ -142,6 +142,8 @@ struct dentry *ext2_get_parent(struct dentry *child);
> >  /* super.c */
> >  extern void ext2_error (struct super_block *, const char *, const char *, ...)
> >  	__attribute__ ((format (printf, 3, 4)));
> > +extern void ext2_msg(struct super_block *, const char *, const char *, ...)
> > +	__attribute__ ((format (printf, 3, 4)));
> >  extern void ext2_warning (struct super_block *, const char *, const char *, ...)
> >  	__attribute__ ((format (printf, 3, 4)));
> >  extern void ext2_update_dynamic_rev (struct super_block *sb);
> > diff --git a/fs/ext2/super.c b/fs/ext2/super.c
> > index 1a9ffee..105fcd1 100644
> > --- a/fs/ext2/super.c
> > +++ b/fs/ext2/super.c
> > @@ -58,26 +58,38 @@ void ext2_error (struct super_block * sb, const char * function,
> >  	}
> >  
> >  	va_start(args, fmt);
> > -	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
> > +	ext2_msg(sb, KERN_CRIT, "error %s", function);
  So this will be:
EXT2-fs (sda6): error function_foo
error message
  Not quite what we want I think. Besides that I'd like a bit more
messages like:
EXT2-fs error (device): function: message

And for other warnings:
EXT2-fs warning (device): function: message

It's still easy to parse by grep and IMHO nicer to read.

> > @@ -420,7 +432,7 @@ static const match_table_t tokens = {
> >  };
> >  
> >  static int parse_options (char * options,
> > -			  struct ext2_sb_info *sbi)
> > +			  struct ext2_sb_info *sbi, struct super_block *sb)
> >  {
> >  	char * p;
> >  	substring_t args[MAX_OPT_ARGS];
  When you pass in 'sb', there's no need to pass in 'sbi' since than can
be obtained as EXT2_SB(sb).

> >  cantfind_ext2:
> >  	if (!silent)
> > -		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
> > -		       sb->s_id);
> > +		ext2_msg(sb, KERN_ERR,
> > +			"VFS: Can't find an ext2 filesystem");
> >  	goto failed_mount;
  This message will be strange:
EXT2-fs (device): VFS: Can't find an ext2 filesystem

  I'd maybe drop the "VFS:" and leave "on dev ..." in the message. I
know the device name will be duplicated but without that the sentence
just doesn't quite make sence.

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

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

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

Hi,

Am Dienstag, den 17.11.2009, 22:23 +0100 schrieb Jan Kara:
> Hi,
> 
>   overall I like the patch. A few comments are below. When you fix them,
> I can take care of merging the patch (please CC me on the posting so
> that I don't miss it in the mailing list).
> 
> > Am Donnerstag, den 05.11.2009, 08:33 +0100 schrieb Alexey Fisher:
> > > make messages produced by ext2 more unified. It should be
> > > easy to parse.
> > > 
> > > dmesg before patch:
> > > [ 4893.684892] reservations ON
> > > [ 4893.684896] xip option not supported
> > > [ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
> > > [ 4893.684964] EXT2-fs warning: maximal mount count reached, running
> > > e2fsck is recommended
> > > [ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> > > bpg=8192, ipg=1280, mo=80010]
> > > 
> > > dmesg after patch:
> > > [ 4893.684892] EXT2-fs (loop0): reservations ON
> > > [ 4893.684896] EXT2-fs (loop0): xip option not supported
> > > [ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
> > > ext2
> > > [ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
> > > running e2fsck is recommended
> > > [ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> > > bpg=8192, ipg=1280, mo=80010]
> > > 
> > > Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
> > > Reviewed-by: Andreas Dilger <adilger@sun.com>
> > > ---
> > >  fs/ext2/ext2.h  |    2 +
> > >  fs/ext2/super.c |  151 +++++++++++++++++++++++++++++++------------------------
> > >  2 files changed, 88 insertions(+), 65 deletions(-)
> > > 
> > > diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
> > > index 9a8a8e2..29f65c5 100644
> > > --- a/fs/ext2/ext2.h
> > > +++ b/fs/ext2/ext2.h
> > > @@ -142,6 +142,8 @@ struct dentry *ext2_get_parent(struct dentry *child);
> > >  /* super.c */
> > >  extern void ext2_error (struct super_block *, const char *, const char *, ...)
> > >  	__attribute__ ((format (printf, 3, 4)));
> > > +extern void ext2_msg(struct super_block *, const char *, const char *, ...)
> > > +	__attribute__ ((format (printf, 3, 4)));
> > >  extern void ext2_warning (struct super_block *, const char *, const char *, ...)
> > >  	__attribute__ ((format (printf, 3, 4)));
> > >  extern void ext2_update_dynamic_rev (struct super_block *sb);
> > > diff --git a/fs/ext2/super.c b/fs/ext2/super.c
> > > index 1a9ffee..105fcd1 100644
> > > --- a/fs/ext2/super.c
> > > +++ b/fs/ext2/super.c
> > > @@ -58,26 +58,38 @@ void ext2_error (struct super_block * sb, const char * function,
> > >  	}
> > >  
> > >  	va_start(args, fmt);
> > > -	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
> > > +	ext2_msg(sb, KERN_CRIT, "error %s", function);
>   So this will be:
> EXT2-fs (sda6): error function_foo
> error message
>   Not quite what we want I think. Besides that I'd like a bit more
> messages like:
> EXT2-fs error (device): function: message
> 
> And for other warnings:
> EXT2-fs warning (device): function: message
> 
> It's still easy to parse by grep and IMHO nicer to read.

Hmm... there is currently 3 functions to inform user: ext2_error,
ext2_msg and ext2_warning

ext2_error used only on critical errors, so it will remount ro or panic
ext2_warning will print way you like "EXT2-fs warning (device):
function: message"
ext2_msg is sort all around, you can warn or inform but this do not
include __function__ and this will looks like: "EXT2-fs warning
(device): warning: message"

IMHO not all warnings need function to be printed, for example:
"warning: mounting unchecked fs, running e2fsck is recommended" so if i
use ext2_msg this looks like "EXT2-fs (sda6): warning: mounting
unchecked fs, running e2fsck is recommended"

So the question is: do we actually need print __function__ in warnings?
If not, we do not need ext2_warning but this will not look the way you
like ;)

instead of
EXT2-fs error (device): function: message
EXT2-fs warning (device): function: message

will be:
EXT2-fs (device): error: message 
EXT2-fs (device): warning: message
EXT2-fs (device): message

If we do ext2_warning we can make all messages consequent. Some of them
will use ext2_warning
EXT2-fs warning (device): function: message

and some ext2_msg
EXT2-fs (device): warning: message

> > > @@ -420,7 +432,7 @@ static const match_table_t tokens = {
> > >  };
> > >  
> > >  static int parse_options (char * options,
> > > -			  struct ext2_sb_info *sbi)
> > > +			  struct ext2_sb_info *sbi, struct super_block *sb)
> > >  {
> > >  	char * p;
> > >  	substring_t args[MAX_OPT_ARGS];
>   When you pass in 'sb', there's no need to pass in 'sbi' since than can
> be obtained as EXT2_SB(sb).
> 
> > >  cantfind_ext2:
> > >  	if (!silent)
> > > -		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
> > > -		       sb->s_id);
> > > +		ext2_msg(sb, KERN_ERR,
> > > +			"VFS: Can't find an ext2 filesystem");
> > >  	goto failed_mount;
>   This message will be strange:
> EXT2-fs (device): VFS: Can't find an ext2 filesystem
> 
>   I'd maybe drop the "VFS:" and leave "on dev ..." in the message. I
> know the device name will be duplicated but without that the sentence
> just doesn't quite make sence.
> 
> 								Honza

Alexey



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

* [PATCH v2] Unify log messages in ext2
  2009-11-17 21:23           ` Jan Kara
  2009-11-18 19:26             ` Alexey Fisher
@ 2009-11-19 11:17             ` Alexey Fisher
  2009-11-19 11:22               ` Alexey Fisher
  2009-11-19 11:30               ` [PATCH v3] " Alexey Fisher
  1 sibling, 2 replies; 20+ messages in thread
From: Alexey Fisher @ 2009-11-19 11:17 UTC (permalink / raw)
  To: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso
  Cc: Alexey Fisher

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

dmesg before patch:
[ 4893.684892] reservations ON
[ 4893.684896] xip option not supported
[ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
[ 4893.684964] EXT2-fs warning: maximal mount count reached, running
e2fsck is recommended
[ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

dmesg after patch:
[ 4893.684892] EXT2-fs (loop0): reservations ON
[ 4893.684896] EXT2-fs (loop0): xip option not supported
[ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
ext2
[ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
running e2fsck is recommended
[ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
Reviewed-by: Andreas Dilger <adilger@sun.com>
---
 fs/ext2/ext2.h  |    2 +-
 fs/ext2/inode.c |    6 +-
 fs/ext2/super.c |  165 ++++++++++++++++++++++++++++++-------------------------
 fs/ext2/xip.c   |    5 +-
 4 files changed, 99 insertions(+), 79 deletions(-)

diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 9a8a8e2..da318b0 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -142,7 +142,7 @@ struct dentry *ext2_get_parent(struct dentry *child);
 /* super.c */
 extern void ext2_error (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
-extern void ext2_warning (struct super_block *, const char *, const char *, ...)
+extern void ext2_msg(struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
 extern void ext2_update_dynamic_rev (struct super_block *sb);
 extern void ext2_write_super (struct super_block *);
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index ade6340..2725f5d 100644
--- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c
@@ -137,7 +137,8 @@ static int ext2_block_to_path(struct inode *inode,
 	int final = 0;
 
 	if (i_block < 0) {
-		ext2_warning (inode->i_sb, "ext2_block_to_path", "block < 0");
+		ext2_msg (inode->i_sb, KERN_WARNING,
+			"warning: %s: block < 0", __func__);
 	} else if (i_block < direct_blocks) {
 		offsets[n++] = i_block;
 		final = direct_blocks;
@@ -157,7 +158,8 @@ static int ext2_block_to_path(struct inode *inode,
 		offsets[n++] = i_block & (ptrs - 1);
 		final = ptrs;
 	} else {
-		ext2_warning (inode->i_sb, "ext2_block_to_path", "block > big");
+		ext2_msg (inode->i_sb, KERN_WARNING,
+			"warning: %s: block is too big", __func__);
 	}
 	if (boundary)
 		*boundary = final - 1 - (i_block & (ptrs - 1));
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 1a9ffee..0865bec 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -58,27 +58,27 @@ void ext2_error (struct super_block * sb, const char * function,
 	}
 
 	va_start(args, fmt);
-	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
+	printk(KERN_CRIT "EXT2-fs (%s): error: %s: ",sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
 
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT2-fs panic from previous error\n");
+		panic("EXT2-fs: panic from previous error\n");
 	if (test_opt(sb, ERRORS_RO)) {
-		printk("Remounting filesystem read-only\n");
+		ext2_msg(sb, KERN_CRIT,
+			     "error: remounting filesystem read-only");
 		sb->s_flags |= MS_RDONLY;
 	}
 }
 
-void ext2_warning (struct super_block * sb, const char * function,
-		   const char * fmt, ...)
+void ext2_msg(struct super_block *sb, const char *prefix,
+		const char *fmt, ...)
 {
 	va_list args;
 
 	va_start(args, fmt);
-	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
-	       sb->s_id, function);
+	printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
@@ -91,10 +91,10 @@ void ext2_update_dynamic_rev(struct super_block *sb)
 	if (le32_to_cpu(es->s_rev_level) > EXT2_GOOD_OLD_REV)
 		return;
 
-	ext2_warning(sb, __func__,
-		     "updating to rev %d because of new feature flag, "
-		     "running e2fsck is recommended",
-		     EXT2_DYNAMIC_REV);
+	ext2_msg(sb, KERN_WARNING,
+		     "warning: %s: updating to rev %d because of "
+		     "new feature flag, running e2fsck is recommended",
+		     __func__, EXT2_DYNAMIC_REV);
 
 	es->s_first_ino = cpu_to_le32(EXT2_GOOD_OLD_FIRST_INO);
 	es->s_inode_size = cpu_to_le16(EXT2_GOOD_OLD_INODE_SIZE);
@@ -420,7 +420,7 @@ static const match_table_t tokens = {
 };
 
 static int parse_options (char * options,
-			  struct ext2_sb_info *sbi)
+			  struct ext2_sb_info *sbi, struct super_block *sb)
 {
 	char * p;
 	substring_t args[MAX_OPT_ARGS];
@@ -505,7 +505,8 @@ static int parse_options (char * options,
 #else
 		case Opt_user_xattr:
 		case Opt_nouser_xattr:
-			printk("EXT2 (no)user_xattr options not supported\n");
+			ext2_msg(sb, KERN_INFO, "(no)user_xattr options"
+				"not supported");
 			break;
 #endif
 #ifdef CONFIG_EXT2_FS_POSIX_ACL
@@ -518,14 +519,15 @@ static int parse_options (char * options,
 #else
 		case Opt_acl:
 		case Opt_noacl:
-			printk("EXT2 (no)acl options not supported\n");
+			ext2_msg(sb, KERN_INFO,
+				"(no)acl options not supported");
 			break;
 #endif
 		case Opt_xip:
 #ifdef CONFIG_EXT2_FS_XIP
 			set_opt (sbi->s_mount_opt, XIP);
 #else
-			printk("EXT2 xip option not supported\n");
+			ext2_msg(sb, KERN_INFO, "xip option not supported");
 #endif
 			break;
 
@@ -542,19 +544,18 @@ static int parse_options (char * options,
 		case Opt_quota:
 		case Opt_usrquota:
 		case Opt_grpquota:
-			printk(KERN_ERR
-				"EXT2-fs: quota operations not supported.\n");
-
+			ext2_msg(sb, KERN_INFO,
+				"quota operations not supported");
 			break;
 #endif
 
 		case Opt_reservation:
 			set_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations ON\n");
+			ext2_msg(sb, KERN_INFO, "reservations ON");
 			break;
 		case Opt_noreservation:
 			clear_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations OFF\n");
+			ext2_msg(sb, KERN_INFO, "reservations OFF");
 			break;
 		case Opt_ignore:
 			break;
@@ -573,34 +574,40 @@ static int ext2_setup_super (struct super_block * sb,
 	struct ext2_sb_info *sbi = EXT2_SB(sb);
 
 	if (le32_to_cpu(es->s_rev_level) > EXT2_MAX_SUPP_REV) {
-		printk ("EXT2-fs warning: revision level too high, "
-			"forcing read-only mode\n");
+		ext2_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 & EXT2_VALID_FS))
-		printk ("EXT2-fs warning: mounting unchecked fs, "
-			"running e2fsck is recommended\n");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting unchecked fs, "
+			"running e2fsck is recommended");
 	else if ((sbi->s_mount_state & EXT2_ERROR_FS))
-		printk ("EXT2-fs warning: mounting fs with errors, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: maximal mount count reached, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: checktime reached, "
-			"running e2fsck is recommended\n");
+		(le32_to_cpu(es->s_lastcheck) +
+			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
+		ext2_msg(sb, KERN_WARNING,
+			"warning: checktime reached, "
+			"running e2fsck is recommended");
 	if (!le16_to_cpu(es->s_max_mnt_count))
 		es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
 	le16_add_cpu(&es->s_mnt_count, 1);
 	ext2_write_super(sb);
 	if (test_opt (sb, DEBUG))
-		printk ("[EXT II FS %s, %s, bs=%lu, fs=%lu, gc=%lu, "
-			"bpg=%lu, ipg=%lu, mo=%04lx]\n",
+		ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, "
+			"bpg=%lu, ipg=%lu, mo=%04lx]",
 			EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize,
 			sbi->s_frag_size,
 			sbi->s_groups_count,
@@ -767,7 +774,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	blocksize = sb_min_blocksize(sb, BLOCK_SIZE);
 	if (!blocksize) {
-		printk ("EXT2-fs: unable to set blocksize\n");
+		ext2_msg(sb, KERN_ERR, "error: unable to set blocksize");
 		goto failed_sbi;
 	}
 
@@ -783,7 +790,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 
 	if (!(bh = sb_bread(sb, logic_sb_block))) {
-		printk ("EXT2-fs: unable to read superblock\n");
+		ext2_msg(sb, KERN_ERR, "error: unable to read superblock");
 		goto failed_sbi;
 	}
 	/*
@@ -826,7 +833,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	
 	set_opt(sbi->s_mount_opt, RESERVATION);
 
-	if (!parse_options ((char *) data, sbi))
+	if (!parse_options((char *) data, sbi, sb))
 		goto failed_mount;
 
 	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
@@ -840,8 +847,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
-		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
-		       "running e2fsck is recommended\n");
+		ext2_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,
@@ -849,16 +857,16 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	features = EXT2_HAS_INCOMPAT_FEATURE(sb, ~EXT2_FEATURE_INCOMPAT_SUPP);
 	if (features) {
-		printk("EXT2-fs: %s: couldn't mount because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR,	"error: couldn't mount because of "
+		       "unsupported optional features (%x)",
+			le32_to_cpu(features));
 		goto failed_mount;
 	}
 	if (!(sb->s_flags & MS_RDONLY) &&
 	    (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
-		printk("EXT2-fs: %s: couldn't mount RDWR because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR, "error: couldn't mount RDWR because of "
+		       "unsupported optional features (%x)",
+		       le32_to_cpu(features));
 		goto failed_mount;
 	}
 
@@ -866,7 +874,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (ext2_use_xip(sb) && blocksize != PAGE_SIZE) {
 		if (!silent)
-			printk("XIP: Unsupported blocksize\n");
+			ext2_msg(sb, KERN_ERR,
+			"error: unsupported blocksize for xip");
 		goto failed_mount;
 	}
 
@@ -875,7 +884,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		brelse(bh);
 
 		if (!sb_set_blocksize(sb, blocksize)) {
-			printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
+			ext2_msg(sb, KERN_ERR, "error: blocksize is too small");
 			goto failed_sbi;
 		}
 
@@ -883,14 +892,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		offset = (sb_block*BLOCK_SIZE) % blocksize;
 		bh = sb_bread(sb, logic_sb_block);
 		if(!bh) {
-			printk("EXT2-fs: Couldn't read superblock on "
-			       "2nd try.\n");
+			ext2_msg(sb, KERN_ERR, "error: couldn't read"
+				"superblock on 2nd try");
 			goto failed_sbi;
 		}
 		es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
 		sbi->s_es = es;
 		if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
-			printk ("EXT2-fs: Magic mismatch, very weird !\n");
+			ext2_msg(sb, KERN_ERR, "error: magic mismatch");
 			goto failed_mount;
 		}
 	}
@@ -906,7 +915,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) ||
 		    !is_power_of_2(sbi->s_inode_size) ||
 		    (sbi->s_inode_size > blocksize)) {
-			printk ("EXT2-fs: unsupported inode size: %d\n",
+			ext2_msg(sb, KERN_ERR,
+				"error: unsupported inode size: %d",
 				sbi->s_inode_size);
 			goto failed_mount;
 		}
@@ -943,29 +953,33 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (sb->s_blocksize != bh->b_size) {
 		if (!silent)
-			printk ("VFS: Unsupported blocksize on dev "
-				"%s.\n", sb->s_id);
+			ext2_msg(sb, KERN_ERR, "error: unsupported blocksize");
 		goto failed_mount;
 	}
 
 	if (sb->s_blocksize != sbi->s_frag_size) {
-		printk ("EXT2-fs: fragsize %lu != blocksize %lu (not supported yet)\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: fragsize %lu != blocksize %lu"
+			"(not supported yet)", 
 			sbi->s_frag_size, sb->s_blocksize);
 		goto failed_mount;
 	}
 
 	if (sbi->s_blocks_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #blocks per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: #blocks per group too big: %lu",
 			sbi->s_blocks_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_frags_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #fragments per group too big: %lu\n",
+		ext2_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 > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #inodes per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: #inodes per group too big: %lu",
 			sbi->s_inodes_per_group);
 		goto failed_mount;
 	}
@@ -979,13 +993,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		   EXT2_DESC_PER_BLOCK(sb);
 	sbi->s_group_desc = kmalloc (db_count * sizeof (struct buffer_head *), GFP_KERNEL);
 	if (sbi->s_group_desc == NULL) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "error: not enough memory");
 		goto failed_mount;
 	}
 	bgl_lock_init(sbi->s_blockgroup_lock);
 	sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
 	if (!sbi->s_debts) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "error: not enough memory");
 		goto failed_mount_group_desc;
 	}
 	for (i = 0; i < db_count; i++) {
@@ -994,12 +1008,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if (!sbi->s_group_desc[i]) {
 			for (j = 0; j < i; j++)
 				brelse (sbi->s_group_desc[j]);
-			printk ("EXT2-fs: unable to read group descriptors\n");
+			ext2_msg(sb, KERN_ERR,
+				"error: unable to read group descriptors");
 			goto failed_mount_group_desc;
 		}
 	}
 	if (!ext2_check_descriptors (sb)) {
-		printk ("EXT2-fs: group descriptors corrupted!\n");
+		ext2_msg(sb, KERN_ERR, "group descriptors corrupted");
 		goto failed_mount2;
 	}
 	sbi->s_gdb_count = db_count;
@@ -1032,7 +1047,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 				ext2_count_dirs(sb));
 	}
 	if (err) {
-		printk(KERN_ERR "EXT2-fs: insufficient memory\n");
+		ext2_msg(sb, KERN_ERR, "error: insufficient memory");
 		goto failed_mount3;
 	}
 	/*
@@ -1048,27 +1063,27 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
+		ext2_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
 		goto failed_mount3;
 	}
 
 	sb->s_root = d_alloc_root(root);
 	if (!sb->s_root) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: get root inode failed\n");
+		ext2_msg(sb, KERN_ERR, "error: get root inode failed");
 		ret = -ENOMEM;
 		goto failed_mount3;
 	}
 	if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
-		ext2_warning(sb, __func__,
-			"mounting ext3 filesystem as ext2");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting ext3 filesystem as ext2");
 	ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);
 	return 0;
 
 cantfind_ext2:
 	if (!silent)
-		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
-		       sb->s_id);
+		ext2_msg(sb, KERN_ERR,
+			"error: can't find an ext2 filesystem");
 	goto failed_mount;
 failed_mount3:
 	percpu_counter_destroy(&sbi->s_freeblocks_counter);
@@ -1170,7 +1185,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	/*
 	 * Allow the "check" option to be passed as a remount option.
 	 */
-	if (!parse_options (data, sbi)) {
+	if (!parse_options(data, sbi, sb)) {
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1182,7 +1197,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 				    EXT2_MOUNT_XIP if not */
 
 	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
-		printk("XIP: Unsupported blocksize\n");
+		ext2_msg(sb, KERN_WARNING,
+			"wraning: unsupported blocksize for xip");
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1191,8 +1207,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
 	    (old_mount_opt & EXT2_MOUNT_XIP)) &&
 	    invalidate_inodes(sb)) {
-		ext2_warning(sb, __func__, "refusing change of xip flag "
-			     "with busy inodes while remounting");
+		ext2_msg(sb, KERN_WARNING, "warning: refusing change of "
+			 "xip flag with busy inodes while remounting");
 		sbi->s_mount_opt &= ~EXT2_MOUNT_XIP;
 		sbi->s_mount_opt |= old_mount_opt & EXT2_MOUNT_XIP;
 	}
@@ -1216,9 +1232,10 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 		__le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
 					       ~EXT2_FEATURE_RO_COMPAT_SUPP);
 		if (ret) {
-			printk("EXT2-fs: %s: couldn't remount RDWR because of "
-			       "unsupported optional features (%x).\n",
-			       sb->s_id, le32_to_cpu(ret));
+			ext2_msg(sb, KERN_WARNING,
+				"warning: couldn't remount RDWR because of "
+				"unsupported optional features (%x).",
+				le32_to_cpu(ret));
 			err = -EROFS;
 			goto restore_opts;
 		}
diff --git a/fs/ext2/xip.c b/fs/ext2/xip.c
index c18fbf3..8df7502 100644
--- a/fs/ext2/xip.c
+++ b/fs/ext2/xip.c
@@ -69,8 +69,9 @@ void ext2_xip_verify_sb(struct super_block *sb)
 	if ((sbi->s_mount_opt & EXT2_MOUNT_XIP) &&
 	    !sb->s_bdev->bd_disk->fops->direct_access) {
 		sbi->s_mount_opt &= (~EXT2_MOUNT_XIP);
-		ext2_warning(sb, __func__,
-			     "ignoring xip option - not supported by bdev");
+		ext2_msg(sb, KERN_WARNING,
+			     "warning: %s: ignoring xip option - "
+			     "not supported by bdev", __func__);
 	}
 }
 
-- 
1.6.3.3


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

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

I removed in this patch ext2_warning, IMHO ext2_msg is more flexible.
"EXT2_fs warning (dev):" vs "EXT2_fs (dev): warning:" IMHO, first option
looks nice but it make code more complicated.


Am Donnerstag, den 19.11.2009, 12:17 +0100 schrieb Alexey Fisher:
> make messages produced by ext2 more unified. It should be
> easy to parse.
> 
> dmesg before patch:
> [ 4893.684892] reservations ON
> [ 4893.684896] xip option not supported
> [ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
> [ 4893.684964] EXT2-fs warning: maximal mount count reached, running
> e2fsck is recommended
> [ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> bpg=8192, ipg=1280, mo=80010]
> 
> dmesg after patch:
> [ 4893.684892] EXT2-fs (loop0): reservations ON
> [ 4893.684896] EXT2-fs (loop0): xip option not supported
> [ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
> ext2
> [ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
> running e2fsck is recommended
> [ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> bpg=8192, ipg=1280, mo=80010]
> 
> Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
> Reviewed-by: Andreas Dilger <adilger@sun.com>
> ---
>  fs/ext2/ext2.h  |    2 +-
>  fs/ext2/inode.c |    6 +-
>  fs/ext2/super.c |  165 ++++++++++++++++++++++++++++++-------------------------
>  fs/ext2/xip.c   |    5 +-
>  4 files changed, 99 insertions(+), 79 deletions(-)
> 
> diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
> index 9a8a8e2..da318b0 100644
> --- a/fs/ext2/ext2.h
> +++ b/fs/ext2/ext2.h
> @@ -142,7 +142,7 @@ struct dentry *ext2_get_parent(struct dentry *child);
>  /* super.c */
>  extern void ext2_error (struct super_block *, const char *, const char *, ...)
>  	__attribute__ ((format (printf, 3, 4)));
> -extern void ext2_warning (struct super_block *, const char *, const char *, ...)
> +extern void ext2_msg(struct super_block *, const char *, const char *, ...)
>  	__attribute__ ((format (printf, 3, 4)));
>  extern void ext2_update_dynamic_rev (struct super_block *sb);
>  extern void ext2_write_super (struct super_block *);
> diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
> index ade6340..2725f5d 100644
> --- a/fs/ext2/inode.c
> +++ b/fs/ext2/inode.c
> @@ -137,7 +137,8 @@ static int ext2_block_to_path(struct inode *inode,
>  	int final = 0;
>  
>  	if (i_block < 0) {
> -		ext2_warning (inode->i_sb, "ext2_block_to_path", "block < 0");
> +		ext2_msg (inode->i_sb, KERN_WARNING,
> +			"warning: %s: block < 0", __func__);
>  	} else if (i_block < direct_blocks) {
>  		offsets[n++] = i_block;
>  		final = direct_blocks;
> @@ -157,7 +158,8 @@ static int ext2_block_to_path(struct inode *inode,
>  		offsets[n++] = i_block & (ptrs - 1);
>  		final = ptrs;
>  	} else {
> -		ext2_warning (inode->i_sb, "ext2_block_to_path", "block > big");
> +		ext2_msg (inode->i_sb, KERN_WARNING,
> +			"warning: %s: block is too big", __func__);
>  	}
>  	if (boundary)
>  		*boundary = final - 1 - (i_block & (ptrs - 1));
> diff --git a/fs/ext2/super.c b/fs/ext2/super.c
> index 1a9ffee..0865bec 100644
> --- a/fs/ext2/super.c
> +++ b/fs/ext2/super.c
> @@ -58,27 +58,27 @@ void ext2_error (struct super_block * sb, const char * function,
>  	}
>  
>  	va_start(args, fmt);
> -	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
> +	printk(KERN_CRIT "EXT2-fs (%s): error: %s: ",sb->s_id, function);
>  	vprintk(fmt, args);
>  	printk("\n");
>  	va_end(args);
>  
>  	if (test_opt(sb, ERRORS_PANIC))
> -		panic("EXT2-fs panic from previous error\n");
> +		panic("EXT2-fs: panic from previous error\n");
>  	if (test_opt(sb, ERRORS_RO)) {
> -		printk("Remounting filesystem read-only\n");
> +		ext2_msg(sb, KERN_CRIT,
> +			     "error: remounting filesystem read-only");
>  		sb->s_flags |= MS_RDONLY;
>  	}
>  }
>  
> -void ext2_warning (struct super_block * sb, const char * function,
> -		   const char * fmt, ...)
> +void ext2_msg(struct super_block *sb, const char *prefix,
> +		const char *fmt, ...)
>  {
>  	va_list args;
>  
>  	va_start(args, fmt);
> -	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
> -	       sb->s_id, function);
> +	printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
>  	vprintk(fmt, args);
>  	printk("\n");
>  	va_end(args);
> @@ -91,10 +91,10 @@ void ext2_update_dynamic_rev(struct super_block *sb)
>  	if (le32_to_cpu(es->s_rev_level) > EXT2_GOOD_OLD_REV)
>  		return;
>  
> -	ext2_warning(sb, __func__,
> -		     "updating to rev %d because of new feature flag, "
> -		     "running e2fsck is recommended",
> -		     EXT2_DYNAMIC_REV);
> +	ext2_msg(sb, KERN_WARNING,
> +		     "warning: %s: updating to rev %d because of "
> +		     "new feature flag, running e2fsck is recommended",
> +		     __func__, EXT2_DYNAMIC_REV);
>  
>  	es->s_first_ino = cpu_to_le32(EXT2_GOOD_OLD_FIRST_INO);
>  	es->s_inode_size = cpu_to_le16(EXT2_GOOD_OLD_INODE_SIZE);
> @@ -420,7 +420,7 @@ static const match_table_t tokens = {
>  };
>  
>  static int parse_options (char * options,
> -			  struct ext2_sb_info *sbi)
> +			  struct ext2_sb_info *sbi, struct super_block *sb)
>  {
>  	char * p;
>  	substring_t args[MAX_OPT_ARGS];
> @@ -505,7 +505,8 @@ static int parse_options (char * options,
>  #else
>  		case Opt_user_xattr:
>  		case Opt_nouser_xattr:
> -			printk("EXT2 (no)user_xattr options not supported\n");
> +			ext2_msg(sb, KERN_INFO, "(no)user_xattr options"
> +				"not supported");
>  			break;
>  #endif
>  #ifdef CONFIG_EXT2_FS_POSIX_ACL
> @@ -518,14 +519,15 @@ static int parse_options (char * options,
>  #else
>  		case Opt_acl:
>  		case Opt_noacl:
> -			printk("EXT2 (no)acl options not supported\n");
> +			ext2_msg(sb, KERN_INFO,
> +				"(no)acl options not supported");
>  			break;
>  #endif
>  		case Opt_xip:
>  #ifdef CONFIG_EXT2_FS_XIP
>  			set_opt (sbi->s_mount_opt, XIP);
>  #else
> -			printk("EXT2 xip option not supported\n");
> +			ext2_msg(sb, KERN_INFO, "xip option not supported");
>  #endif
>  			break;
>  
> @@ -542,19 +544,18 @@ static int parse_options (char * options,
>  		case Opt_quota:
>  		case Opt_usrquota:
>  		case Opt_grpquota:
> -			printk(KERN_ERR
> -				"EXT2-fs: quota operations not supported.\n");
> -
> +			ext2_msg(sb, KERN_INFO,
> +				"quota operations not supported");
>  			break;
>  #endif
>  
>  		case Opt_reservation:
>  			set_opt(sbi->s_mount_opt, RESERVATION);
> -			printk("reservations ON\n");
> +			ext2_msg(sb, KERN_INFO, "reservations ON");
>  			break;
>  		case Opt_noreservation:
>  			clear_opt(sbi->s_mount_opt, RESERVATION);
> -			printk("reservations OFF\n");
> +			ext2_msg(sb, KERN_INFO, "reservations OFF");
>  			break;
>  		case Opt_ignore:
>  			break;
> @@ -573,34 +574,40 @@ static int ext2_setup_super (struct super_block * sb,
>  	struct ext2_sb_info *sbi = EXT2_SB(sb);
>  
>  	if (le32_to_cpu(es->s_rev_level) > EXT2_MAX_SUPP_REV) {
> -		printk ("EXT2-fs warning: revision level too high, "
> -			"forcing read-only mode\n");
> +		ext2_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 & EXT2_VALID_FS))
> -		printk ("EXT2-fs warning: mounting unchecked fs, "
> -			"running e2fsck is recommended\n");
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: mounting unchecked fs, "
> +			"running e2fsck is recommended");
>  	else if ((sbi->s_mount_state & EXT2_ERROR_FS))
> -		printk ("EXT2-fs warning: mounting fs with errors, "
> -			"running e2fsck is recommended\n");
> +		ext2_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 ("EXT2-fs warning: maximal mount count reached, "
> -			"running e2fsck is recommended\n");
> +		ext2_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 ("EXT2-fs warning: checktime reached, "
> -			"running e2fsck is recommended\n");
> +		(le32_to_cpu(es->s_lastcheck) +
> +			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: checktime reached, "
> +			"running e2fsck is recommended");
>  	if (!le16_to_cpu(es->s_max_mnt_count))
>  		es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
>  	le16_add_cpu(&es->s_mnt_count, 1);
>  	ext2_write_super(sb);
>  	if (test_opt (sb, DEBUG))
> -		printk ("[EXT II FS %s, %s, bs=%lu, fs=%lu, gc=%lu, "
> -			"bpg=%lu, ipg=%lu, mo=%04lx]\n",
> +		ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, "
> +			"bpg=%lu, ipg=%lu, mo=%04lx]",
>  			EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize,
>  			sbi->s_frag_size,
>  			sbi->s_groups_count,
> @@ -767,7 +774,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	 */
>  	blocksize = sb_min_blocksize(sb, BLOCK_SIZE);
>  	if (!blocksize) {
> -		printk ("EXT2-fs: unable to set blocksize\n");
> +		ext2_msg(sb, KERN_ERR, "error: unable to set blocksize");
>  		goto failed_sbi;
>  	}
>  
> @@ -783,7 +790,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	}
>  
>  	if (!(bh = sb_bread(sb, logic_sb_block))) {
> -		printk ("EXT2-fs: unable to read superblock\n");
> +		ext2_msg(sb, KERN_ERR, "error: unable to read superblock");
>  		goto failed_sbi;
>  	}
>  	/*
> @@ -826,7 +833,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	
>  	set_opt(sbi->s_mount_opt, RESERVATION);
>  
> -	if (!parse_options ((char *) data, sbi))
> +	if (!parse_options((char *) data, sbi, sb))
>  		goto failed_mount;
>  
>  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
> @@ -840,8 +847,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
> -		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
> -		       "running e2fsck is recommended\n");
> +		ext2_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,
> @@ -849,16 +857,16 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	 */
>  	features = EXT2_HAS_INCOMPAT_FEATURE(sb, ~EXT2_FEATURE_INCOMPAT_SUPP);
>  	if (features) {
> -		printk("EXT2-fs: %s: couldn't mount because of "
> -		       "unsupported optional features (%x).\n",
> -		       sb->s_id, le32_to_cpu(features));
> +		ext2_msg(sb, KERN_ERR,	"error: couldn't mount because of "
> +		       "unsupported optional features (%x)",
> +			le32_to_cpu(features));
>  		goto failed_mount;
>  	}
>  	if (!(sb->s_flags & MS_RDONLY) &&
>  	    (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
> -		printk("EXT2-fs: %s: couldn't mount RDWR because of "
> -		       "unsupported optional features (%x).\n",
> -		       sb->s_id, le32_to_cpu(features));
> +		ext2_msg(sb, KERN_ERR, "error: couldn't mount RDWR because of "
> +		       "unsupported optional features (%x)",
> +		       le32_to_cpu(features));
>  		goto failed_mount;
>  	}
>  
> @@ -866,7 +874,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  
>  	if (ext2_use_xip(sb) && blocksize != PAGE_SIZE) {
>  		if (!silent)
> -			printk("XIP: Unsupported blocksize\n");
> +			ext2_msg(sb, KERN_ERR,
> +			"error: unsupported blocksize for xip");
>  		goto failed_mount;
>  	}
>  
> @@ -875,7 +884,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		brelse(bh);
>  
>  		if (!sb_set_blocksize(sb, blocksize)) {
> -			printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
> +			ext2_msg(sb, KERN_ERR, "error: blocksize is too small");
>  			goto failed_sbi;
>  		}
>  
> @@ -883,14 +892,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		offset = (sb_block*BLOCK_SIZE) % blocksize;
>  		bh = sb_bread(sb, logic_sb_block);
>  		if(!bh) {
> -			printk("EXT2-fs: Couldn't read superblock on "
> -			       "2nd try.\n");
> +			ext2_msg(sb, KERN_ERR, "error: couldn't read"
> +				"superblock on 2nd try");
>  			goto failed_sbi;
>  		}
>  		es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
>  		sbi->s_es = es;
>  		if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
> -			printk ("EXT2-fs: Magic mismatch, very weird !\n");
> +			ext2_msg(sb, KERN_ERR, "error: magic mismatch");
>  			goto failed_mount;
>  		}
>  	}
> @@ -906,7 +915,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) ||
>  		    !is_power_of_2(sbi->s_inode_size) ||
>  		    (sbi->s_inode_size > blocksize)) {
> -			printk ("EXT2-fs: unsupported inode size: %d\n",
> +			ext2_msg(sb, KERN_ERR,
> +				"error: unsupported inode size: %d",
>  				sbi->s_inode_size);
>  			goto failed_mount;
>  		}
> @@ -943,29 +953,33 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  
>  	if (sb->s_blocksize != bh->b_size) {
>  		if (!silent)
> -			printk ("VFS: Unsupported blocksize on dev "
> -				"%s.\n", sb->s_id);
> +			ext2_msg(sb, KERN_ERR, "error: unsupported blocksize");
>  		goto failed_mount;
>  	}
>  
>  	if (sb->s_blocksize != sbi->s_frag_size) {
> -		printk ("EXT2-fs: fragsize %lu != blocksize %lu (not supported yet)\n",
> +		ext2_msg(sb, KERN_ERR,
> +			"error: fragsize %lu != blocksize %lu"
> +			"(not supported yet)", 
>  			sbi->s_frag_size, sb->s_blocksize);
>  		goto failed_mount;
>  	}
>  
>  	if (sbi->s_blocks_per_group > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #blocks per group too big: %lu\n",
> +		ext2_msg(sb, KERN_ERR,
> +			"error: #blocks per group too big: %lu",
>  			sbi->s_blocks_per_group);
>  		goto failed_mount;
>  	}
>  	if (sbi->s_frags_per_group > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #fragments per group too big: %lu\n",
> +		ext2_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 > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #inodes per group too big: %lu\n",
> +		ext2_msg(sb, KERN_ERR,
> +			"error: #inodes per group too big: %lu",
>  			sbi->s_inodes_per_group);
>  		goto failed_mount;
>  	}
> @@ -979,13 +993,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		   EXT2_DESC_PER_BLOCK(sb);
>  	sbi->s_group_desc = kmalloc (db_count * sizeof (struct buffer_head *), GFP_KERNEL);
>  	if (sbi->s_group_desc == NULL) {
> -		printk ("EXT2-fs: not enough memory\n");
> +		ext2_msg(sb, KERN_ERR, "error: not enough memory");
>  		goto failed_mount;
>  	}
>  	bgl_lock_init(sbi->s_blockgroup_lock);
>  	sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
>  	if (!sbi->s_debts) {
> -		printk ("EXT2-fs: not enough memory\n");
> +		ext2_msg(sb, KERN_ERR, "error: not enough memory");
>  		goto failed_mount_group_desc;
>  	}
>  	for (i = 0; i < db_count; i++) {
> @@ -994,12 +1008,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		if (!sbi->s_group_desc[i]) {
>  			for (j = 0; j < i; j++)
>  				brelse (sbi->s_group_desc[j]);
> -			printk ("EXT2-fs: unable to read group descriptors\n");
> +			ext2_msg(sb, KERN_ERR,
> +				"error: unable to read group descriptors");
>  			goto failed_mount_group_desc;
>  		}
>  	}
>  	if (!ext2_check_descriptors (sb)) {
> -		printk ("EXT2-fs: group descriptors corrupted!\n");
> +		ext2_msg(sb, KERN_ERR, "group descriptors corrupted");
>  		goto failed_mount2;
>  	}
>  	sbi->s_gdb_count = db_count;
> @@ -1032,7 +1047,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  				ext2_count_dirs(sb));
>  	}
>  	if (err) {
> -		printk(KERN_ERR "EXT2-fs: insufficient memory\n");
> +		ext2_msg(sb, KERN_ERR, "error: insufficient memory");
>  		goto failed_mount3;
>  	}
>  	/*
> @@ -1048,27 +1063,27 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	}
>  	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
>  		iput(root);
> -		printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
> +		ext2_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
>  		goto failed_mount3;
>  	}
>  
>  	sb->s_root = d_alloc_root(root);
>  	if (!sb->s_root) {
>  		iput(root);
> -		printk(KERN_ERR "EXT2-fs: get root inode failed\n");
> +		ext2_msg(sb, KERN_ERR, "error: get root inode failed");
>  		ret = -ENOMEM;
>  		goto failed_mount3;
>  	}
>  	if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
> -		ext2_warning(sb, __func__,
> -			"mounting ext3 filesystem as ext2");
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: mounting ext3 filesystem as ext2");
>  	ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);
>  	return 0;
>  
>  cantfind_ext2:
>  	if (!silent)
> -		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
> -		       sb->s_id);
> +		ext2_msg(sb, KERN_ERR,
> +			"error: can't find an ext2 filesystem");
>  	goto failed_mount;
>  failed_mount3:
>  	percpu_counter_destroy(&sbi->s_freeblocks_counter);
> @@ -1170,7 +1185,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  	/*
>  	 * Allow the "check" option to be passed as a remount option.
>  	 */
> -	if (!parse_options (data, sbi)) {
> +	if (!parse_options(data, sbi, sb)) {
>  		err = -EINVAL;
>  		goto restore_opts;
>  	}
> @@ -1182,7 +1197,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  				    EXT2_MOUNT_XIP if not */
>  
>  	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
> -		printk("XIP: Unsupported blocksize\n");
> +		ext2_msg(sb, KERN_WARNING,
> +			"wraning: unsupported blocksize for xip");
>  		err = -EINVAL;
>  		goto restore_opts;
>  	}
> @@ -1191,8 +1207,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  	if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
>  	    (old_mount_opt & EXT2_MOUNT_XIP)) &&
>  	    invalidate_inodes(sb)) {
> -		ext2_warning(sb, __func__, "refusing change of xip flag "
> -			     "with busy inodes while remounting");
> +		ext2_msg(sb, KERN_WARNING, "warning: refusing change of "
> +			 "xip flag with busy inodes while remounting");
>  		sbi->s_mount_opt &= ~EXT2_MOUNT_XIP;
>  		sbi->s_mount_opt |= old_mount_opt & EXT2_MOUNT_XIP;
>  	}
> @@ -1216,9 +1232,10 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  		__le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
>  					       ~EXT2_FEATURE_RO_COMPAT_SUPP);
>  		if (ret) {
> -			printk("EXT2-fs: %s: couldn't remount RDWR because of "
> -			       "unsupported optional features (%x).\n",
> -			       sb->s_id, le32_to_cpu(ret));
> +			ext2_msg(sb, KERN_WARNING,
> +				"warning: couldn't remount RDWR because of "
> +				"unsupported optional features (%x).",
> +				le32_to_cpu(ret));
>  			err = -EROFS;
>  			goto restore_opts;
>  		}
> diff --git a/fs/ext2/xip.c b/fs/ext2/xip.c
> index c18fbf3..8df7502 100644
> --- a/fs/ext2/xip.c
> +++ b/fs/ext2/xip.c
> @@ -69,8 +69,9 @@ void ext2_xip_verify_sb(struct super_block *sb)
>  	if ((sbi->s_mount_opt & EXT2_MOUNT_XIP) &&
>  	    !sb->s_bdev->bd_disk->fops->direct_access) {
>  		sbi->s_mount_opt &= (~EXT2_MOUNT_XIP);
> -		ext2_warning(sb, __func__,
> -			     "ignoring xip option - not supported by bdev");
> +		ext2_msg(sb, KERN_WARNING,
> +			     "warning: %s: ignoring xip option - "
> +			     "not supported by bdev", __func__);
>  	}
>  }
>  



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

* [PATCH v3] Unify log messages in ext2
  2009-11-19 11:17             ` [PATCH v2] " Alexey Fisher
  2009-11-19 11:22               ` Alexey Fisher
@ 2009-11-19 11:30               ` Alexey Fisher
  2009-11-19 14:32                 ` Jan Kara
  1 sibling, 1 reply; 20+ messages in thread
From: Alexey Fisher @ 2009-11-19 11:30 UTC (permalink / raw)
  To: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso
  Cc: Alexey Fisher

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

dmesg before patch:
[ 4893.684892] reservations ON
[ 4893.684896] xip option not supported
[ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
[ 4893.684964] EXT2-fs warning: maximal mount count reached, running
e2fsck is recommended
[ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

dmesg after patch:
[ 4893.684892] EXT2-fs (loop0): reservations ON
[ 4893.684896] EXT2-fs (loop0): xip option not supported
[ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
ext2
[ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
running e2fsck is recommended
[ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
Reviewed-by: Andreas Dilger <adilger@sun.com>
---
 fs/ext2/ext2.h  |    2 +-
 fs/ext2/inode.c |    6 +-
 fs/ext2/super.c |  165 ++++++++++++++++++++++++++++++-------------------------
 fs/ext2/xip.c   |    5 +-
 4 files changed, 99 insertions(+), 79 deletions(-)

diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 9a8a8e2..da318b0 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -142,7 +142,7 @@ struct dentry *ext2_get_parent(struct dentry *child);
 /* super.c */
 extern void ext2_error (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
-extern void ext2_warning (struct super_block *, const char *, const char *, ...)
+extern void ext2_msg(struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
 extern void ext2_update_dynamic_rev (struct super_block *sb);
 extern void ext2_write_super (struct super_block *);
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index ade6340..71b032c 100644
--- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c
@@ -137,7 +137,8 @@ static int ext2_block_to_path(struct inode *inode,
 	int final = 0;
 
 	if (i_block < 0) {
-		ext2_warning (inode->i_sb, "ext2_block_to_path", "block < 0");
+		ext2_msg(inode->i_sb, KERN_WARNING,
+			"warning: %s: block < 0", __func__);
 	} else if (i_block < direct_blocks) {
 		offsets[n++] = i_block;
 		final = direct_blocks;
@@ -157,7 +158,8 @@ static int ext2_block_to_path(struct inode *inode,
 		offsets[n++] = i_block & (ptrs - 1);
 		final = ptrs;
 	} else {
-		ext2_warning (inode->i_sb, "ext2_block_to_path", "block > big");
+		ext2_msg(inode->i_sb, KERN_WARNING,
+			"warning: %s: block is too big", __func__);
 	}
 	if (boundary)
 		*boundary = final - 1 - (i_block & (ptrs - 1));
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 1a9ffee..25e8b3c 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -58,27 +58,27 @@ void ext2_error (struct super_block * sb, const char * function,
 	}
 
 	va_start(args, fmt);
-	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
+	printk(KERN_CRIT "EXT2-fs (%s): error: %s: ", sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
 
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT2-fs panic from previous error\n");
+		panic("EXT2-fs: panic from previous error\n");
 	if (test_opt(sb, ERRORS_RO)) {
-		printk("Remounting filesystem read-only\n");
+		ext2_msg(sb, KERN_CRIT,
+			     "error: remounting filesystem read-only");
 		sb->s_flags |= MS_RDONLY;
 	}
 }
 
-void ext2_warning (struct super_block * sb, const char * function,
-		   const char * fmt, ...)
+void ext2_msg(struct super_block *sb, const char *prefix,
+		const char *fmt, ...)
 {
 	va_list args;
 
 	va_start(args, fmt);
-	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
-	       sb->s_id, function);
+	printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
@@ -91,10 +91,10 @@ void ext2_update_dynamic_rev(struct super_block *sb)
 	if (le32_to_cpu(es->s_rev_level) > EXT2_GOOD_OLD_REV)
 		return;
 
-	ext2_warning(sb, __func__,
-		     "updating to rev %d because of new feature flag, "
-		     "running e2fsck is recommended",
-		     EXT2_DYNAMIC_REV);
+	ext2_msg(sb, KERN_WARNING,
+		     "warning: %s: updating to rev %d because of "
+		     "new feature flag, running e2fsck is recommended",
+		     __func__, EXT2_DYNAMIC_REV);
 
 	es->s_first_ino = cpu_to_le32(EXT2_GOOD_OLD_FIRST_INO);
 	es->s_inode_size = cpu_to_le16(EXT2_GOOD_OLD_INODE_SIZE);
@@ -420,7 +420,7 @@ static const match_table_t tokens = {
 };
 
 static int parse_options (char * options,
-			  struct ext2_sb_info *sbi)
+			  struct ext2_sb_info *sbi, struct super_block *sb)
 {
 	char * p;
 	substring_t args[MAX_OPT_ARGS];
@@ -505,7 +505,8 @@ static int parse_options (char * options,
 #else
 		case Opt_user_xattr:
 		case Opt_nouser_xattr:
-			printk("EXT2 (no)user_xattr options not supported\n");
+			ext2_msg(sb, KERN_INFO, "(no)user_xattr options"
+				"not supported");
 			break;
 #endif
 #ifdef CONFIG_EXT2_FS_POSIX_ACL
@@ -518,14 +519,15 @@ static int parse_options (char * options,
 #else
 		case Opt_acl:
 		case Opt_noacl:
-			printk("EXT2 (no)acl options not supported\n");
+			ext2_msg(sb, KERN_INFO,
+				"(no)acl options not supported");
 			break;
 #endif
 		case Opt_xip:
 #ifdef CONFIG_EXT2_FS_XIP
 			set_opt (sbi->s_mount_opt, XIP);
 #else
-			printk("EXT2 xip option not supported\n");
+			ext2_msg(sb, KERN_INFO, "xip option not supported");
 #endif
 			break;
 
@@ -542,19 +544,18 @@ static int parse_options (char * options,
 		case Opt_quota:
 		case Opt_usrquota:
 		case Opt_grpquota:
-			printk(KERN_ERR
-				"EXT2-fs: quota operations not supported.\n");
-
+			ext2_msg(sb, KERN_INFO,
+				"quota operations not supported");
 			break;
 #endif
 
 		case Opt_reservation:
 			set_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations ON\n");
+			ext2_msg(sb, KERN_INFO, "reservations ON");
 			break;
 		case Opt_noreservation:
 			clear_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations OFF\n");
+			ext2_msg(sb, KERN_INFO, "reservations OFF");
 			break;
 		case Opt_ignore:
 			break;
@@ -573,34 +574,40 @@ static int ext2_setup_super (struct super_block * sb,
 	struct ext2_sb_info *sbi = EXT2_SB(sb);
 
 	if (le32_to_cpu(es->s_rev_level) > EXT2_MAX_SUPP_REV) {
-		printk ("EXT2-fs warning: revision level too high, "
-			"forcing read-only mode\n");
+		ext2_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 & EXT2_VALID_FS))
-		printk ("EXT2-fs warning: mounting unchecked fs, "
-			"running e2fsck is recommended\n");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting unchecked fs, "
+			"running e2fsck is recommended");
 	else if ((sbi->s_mount_state & EXT2_ERROR_FS))
-		printk ("EXT2-fs warning: mounting fs with errors, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: maximal mount count reached, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: checktime reached, "
-			"running e2fsck is recommended\n");
+		(le32_to_cpu(es->s_lastcheck) +
+			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
+		ext2_msg(sb, KERN_WARNING,
+			"warning: checktime reached, "
+			"running e2fsck is recommended");
 	if (!le16_to_cpu(es->s_max_mnt_count))
 		es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
 	le16_add_cpu(&es->s_mnt_count, 1);
 	ext2_write_super(sb);
 	if (test_opt (sb, DEBUG))
-		printk ("[EXT II FS %s, %s, bs=%lu, fs=%lu, gc=%lu, "
-			"bpg=%lu, ipg=%lu, mo=%04lx]\n",
+		ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, "
+			"bpg=%lu, ipg=%lu, mo=%04lx]",
 			EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize,
 			sbi->s_frag_size,
 			sbi->s_groups_count,
@@ -767,7 +774,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	blocksize = sb_min_blocksize(sb, BLOCK_SIZE);
 	if (!blocksize) {
-		printk ("EXT2-fs: unable to set blocksize\n");
+		ext2_msg(sb, KERN_ERR, "error: unable to set blocksize");
 		goto failed_sbi;
 	}
 
@@ -783,7 +790,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 
 	if (!(bh = sb_bread(sb, logic_sb_block))) {
-		printk ("EXT2-fs: unable to read superblock\n");
+		ext2_msg(sb, KERN_ERR, "error: unable to read superblock");
 		goto failed_sbi;
 	}
 	/*
@@ -826,7 +833,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	
 	set_opt(sbi->s_mount_opt, RESERVATION);
 
-	if (!parse_options ((char *) data, sbi))
+	if (!parse_options((char *) data, sbi, sb))
 		goto failed_mount;
 
 	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
@@ -840,8 +847,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
-		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
-		       "running e2fsck is recommended\n");
+		ext2_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,
@@ -849,16 +857,16 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	features = EXT2_HAS_INCOMPAT_FEATURE(sb, ~EXT2_FEATURE_INCOMPAT_SUPP);
 	if (features) {
-		printk("EXT2-fs: %s: couldn't mount because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR,	"error: couldn't mount because of "
+		       "unsupported optional features (%x)",
+			le32_to_cpu(features));
 		goto failed_mount;
 	}
 	if (!(sb->s_flags & MS_RDONLY) &&
 	    (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
-		printk("EXT2-fs: %s: couldn't mount RDWR because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR, "error: couldn't mount RDWR because of "
+		       "unsupported optional features (%x)",
+		       le32_to_cpu(features));
 		goto failed_mount;
 	}
 
@@ -866,7 +874,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (ext2_use_xip(sb) && blocksize != PAGE_SIZE) {
 		if (!silent)
-			printk("XIP: Unsupported blocksize\n");
+			ext2_msg(sb, KERN_ERR,
+			"error: unsupported blocksize for xip");
 		goto failed_mount;
 	}
 
@@ -875,7 +884,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		brelse(bh);
 
 		if (!sb_set_blocksize(sb, blocksize)) {
-			printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
+			ext2_msg(sb, KERN_ERR, "error: blocksize is too small");
 			goto failed_sbi;
 		}
 
@@ -883,14 +892,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		offset = (sb_block*BLOCK_SIZE) % blocksize;
 		bh = sb_bread(sb, logic_sb_block);
 		if(!bh) {
-			printk("EXT2-fs: Couldn't read superblock on "
-			       "2nd try.\n");
+			ext2_msg(sb, KERN_ERR, "error: couldn't read"
+				"superblock on 2nd try");
 			goto failed_sbi;
 		}
 		es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
 		sbi->s_es = es;
 		if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
-			printk ("EXT2-fs: Magic mismatch, very weird !\n");
+			ext2_msg(sb, KERN_ERR, "error: magic mismatch");
 			goto failed_mount;
 		}
 	}
@@ -906,7 +915,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) ||
 		    !is_power_of_2(sbi->s_inode_size) ||
 		    (sbi->s_inode_size > blocksize)) {
-			printk ("EXT2-fs: unsupported inode size: %d\n",
+			ext2_msg(sb, KERN_ERR,
+				"error: unsupported inode size: %d",
 				sbi->s_inode_size);
 			goto failed_mount;
 		}
@@ -943,29 +953,33 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (sb->s_blocksize != bh->b_size) {
 		if (!silent)
-			printk ("VFS: Unsupported blocksize on dev "
-				"%s.\n", sb->s_id);
+			ext2_msg(sb, KERN_ERR, "error: unsupported blocksize");
 		goto failed_mount;
 	}
 
 	if (sb->s_blocksize != sbi->s_frag_size) {
-		printk ("EXT2-fs: fragsize %lu != blocksize %lu (not supported yet)\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: fragsize %lu != blocksize %lu"
+			"(not supported yet)",
 			sbi->s_frag_size, sb->s_blocksize);
 		goto failed_mount;
 	}
 
 	if (sbi->s_blocks_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #blocks per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: #blocks per group too big: %lu",
 			sbi->s_blocks_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_frags_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #fragments per group too big: %lu\n",
+		ext2_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 > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #inodes per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: #inodes per group too big: %lu",
 			sbi->s_inodes_per_group);
 		goto failed_mount;
 	}
@@ -979,13 +993,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		   EXT2_DESC_PER_BLOCK(sb);
 	sbi->s_group_desc = kmalloc (db_count * sizeof (struct buffer_head *), GFP_KERNEL);
 	if (sbi->s_group_desc == NULL) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "error: not enough memory");
 		goto failed_mount;
 	}
 	bgl_lock_init(sbi->s_blockgroup_lock);
 	sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
 	if (!sbi->s_debts) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "error: not enough memory");
 		goto failed_mount_group_desc;
 	}
 	for (i = 0; i < db_count; i++) {
@@ -994,12 +1008,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if (!sbi->s_group_desc[i]) {
 			for (j = 0; j < i; j++)
 				brelse (sbi->s_group_desc[j]);
-			printk ("EXT2-fs: unable to read group descriptors\n");
+			ext2_msg(sb, KERN_ERR,
+				"error: unable to read group descriptors");
 			goto failed_mount_group_desc;
 		}
 	}
 	if (!ext2_check_descriptors (sb)) {
-		printk ("EXT2-fs: group descriptors corrupted!\n");
+		ext2_msg(sb, KERN_ERR, "group descriptors corrupted");
 		goto failed_mount2;
 	}
 	sbi->s_gdb_count = db_count;
@@ -1032,7 +1047,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 				ext2_count_dirs(sb));
 	}
 	if (err) {
-		printk(KERN_ERR "EXT2-fs: insufficient memory\n");
+		ext2_msg(sb, KERN_ERR, "error: insufficient memory");
 		goto failed_mount3;
 	}
 	/*
@@ -1048,27 +1063,27 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
+		ext2_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
 		goto failed_mount3;
 	}
 
 	sb->s_root = d_alloc_root(root);
 	if (!sb->s_root) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: get root inode failed\n");
+		ext2_msg(sb, KERN_ERR, "error: get root inode failed");
 		ret = -ENOMEM;
 		goto failed_mount3;
 	}
 	if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
-		ext2_warning(sb, __func__,
-			"mounting ext3 filesystem as ext2");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting ext3 filesystem as ext2");
 	ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);
 	return 0;
 
 cantfind_ext2:
 	if (!silent)
-		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
-		       sb->s_id);
+		ext2_msg(sb, KERN_ERR,
+			"error: can't find an ext2 filesystem");
 	goto failed_mount;
 failed_mount3:
 	percpu_counter_destroy(&sbi->s_freeblocks_counter);
@@ -1170,7 +1185,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	/*
 	 * Allow the "check" option to be passed as a remount option.
 	 */
-	if (!parse_options (data, sbi)) {
+	if (!parse_options(data, sbi, sb)) {
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1182,7 +1197,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 				    EXT2_MOUNT_XIP if not */
 
 	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
-		printk("XIP: Unsupported blocksize\n");
+		ext2_msg(sb, KERN_WARNING,
+			"wraning: unsupported blocksize for xip");
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1191,8 +1207,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
 	    (old_mount_opt & EXT2_MOUNT_XIP)) &&
 	    invalidate_inodes(sb)) {
-		ext2_warning(sb, __func__, "refusing change of xip flag "
-			     "with busy inodes while remounting");
+		ext2_msg(sb, KERN_WARNING, "warning: refusing change of "
+			 "xip flag with busy inodes while remounting");
 		sbi->s_mount_opt &= ~EXT2_MOUNT_XIP;
 		sbi->s_mount_opt |= old_mount_opt & EXT2_MOUNT_XIP;
 	}
@@ -1216,9 +1232,10 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 		__le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
 					       ~EXT2_FEATURE_RO_COMPAT_SUPP);
 		if (ret) {
-			printk("EXT2-fs: %s: couldn't remount RDWR because of "
-			       "unsupported optional features (%x).\n",
-			       sb->s_id, le32_to_cpu(ret));
+			ext2_msg(sb, KERN_WARNING,
+				"warning: couldn't remount RDWR because of "
+				"unsupported optional features (%x).",
+				le32_to_cpu(ret));
 			err = -EROFS;
 			goto restore_opts;
 		}
diff --git a/fs/ext2/xip.c b/fs/ext2/xip.c
index c18fbf3..8df7502 100644
--- a/fs/ext2/xip.c
+++ b/fs/ext2/xip.c
@@ -69,8 +69,9 @@ void ext2_xip_verify_sb(struct super_block *sb)
 	if ((sbi->s_mount_opt & EXT2_MOUNT_XIP) &&
 	    !sb->s_bdev->bd_disk->fops->direct_access) {
 		sbi->s_mount_opt &= (~EXT2_MOUNT_XIP);
-		ext2_warning(sb, __func__,
-			     "ignoring xip option - not supported by bdev");
+		ext2_msg(sb, KERN_WARNING,
+			     "warning: %s: ignoring xip option - "
+			     "not supported by bdev", __func__);
 	}
 }
 
-- 
1.6.3.3


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

* Re: [PATCH v3] Unify log messages in ext2
  2009-11-19 11:30               ` [PATCH v3] " Alexey Fisher
@ 2009-11-19 14:32                 ` Jan Kara
  2009-11-19 18:12                   ` [PATCH v4] " Alexey Fisher
  0 siblings, 1 reply; 20+ messages in thread
From: Jan Kara @ 2009-11-19 14:32 UTC (permalink / raw)
  To: Alexey Fisher
  Cc: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso

  Hi,

On Thu 19-11-09 12:30:11, Alexey Fisher wrote:
> make messages produced by ext2 more unified. It should be
> easy to parse.
> 
> dmesg before patch:
> [ 4893.684892] reservations ON
> [ 4893.684896] xip option not supported
> [ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
> [ 4893.684964] EXT2-fs warning: maximal mount count reached, running
> e2fsck is recommended
> [ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> bpg=8192, ipg=1280, mo=80010]
> 
> dmesg after patch:
> [ 4893.684892] EXT2-fs (loop0): reservations ON
> [ 4893.684896] EXT2-fs (loop0): xip option not supported
> [ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
> ext2
> [ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
> running e2fsck is recommended
> [ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> bpg=8192, ipg=1280, mo=80010]
> 
> Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
> Reviewed-by: Andreas Dilger <adilger@sun.com>
  OK, the patch is almost fine. I have slightly changed a few things -
please have a look below. With them I'm fine with merging the patch.

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

>From 3e8f76349a9a3288a24e3ab9e68c16ea31e13b8a Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Thu, 19 Nov 2009 15:26:11 +0100
Subject: [PATCH] ext2: Fixup ext2 messages

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ext2/super.c |   19 ++++++++++---------
 fs/ext2/xip.c   |    4 ++--
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 25e8b3c..d3be602 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -92,9 +92,9 @@ void ext2_update_dynamic_rev(struct super_block *sb)
 		return;
 
 	ext2_msg(sb, KERN_WARNING,
-		     "warning: %s: updating to rev %d because of "
+		     "warning: updating to rev %d because of "
 		     "new feature flag, running e2fsck is recommended",
-		     __func__, EXT2_DYNAMIC_REV);
+		     EXT2_DYNAMIC_REV);
 
 	es->s_first_ino = cpu_to_le32(EXT2_GOOD_OLD_FIRST_INO);
 	es->s_inode_size = cpu_to_le16(EXT2_GOOD_OLD_INODE_SIZE);
@@ -419,10 +419,10 @@ static const match_table_t tokens = {
 	{Opt_err, NULL}
 };
 
-static int parse_options (char * options,
-			  struct ext2_sb_info *sbi, struct super_block *sb)
+static int parse_options(char * options, struct super_block *sb)
 {
-	char * p;
+	char *p;
+	struct ext2_sb_info *sbi = EXT2_SB(sb);
 	substring_t args[MAX_OPT_ARGS];
 	int option;
 
@@ -833,7 +833,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	
 	set_opt(sbi->s_mount_opt, RESERVATION);
 
-	if (!parse_options((char *) data, sbi, sb))
+	if (!parse_options((char *) data, sb))
 		goto failed_mount;
 
 	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
@@ -1083,7 +1083,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 cantfind_ext2:
 	if (!silent)
 		ext2_msg(sb, KERN_ERR,
-			"error: can't find an ext2 filesystem");
+			"error: can't find an ext2 filesystem on dev %s.",
+			sb->s_id);
 	goto failed_mount;
 failed_mount3:
 	percpu_counter_destroy(&sbi->s_freeblocks_counter);
@@ -1185,7 +1186,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	/*
 	 * Allow the "check" option to be passed as a remount option.
 	 */
-	if (!parse_options(data, sbi, sb)) {
+	if (!parse_options(data, sb)) {
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1198,7 +1199,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 
 	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
 		ext2_msg(sb, KERN_WARNING,
-			"wraning: unsupported blocksize for xip");
+			"warning: unsupported blocksize for xip");
 		err = -EINVAL;
 		goto restore_opts;
 	}
diff --git a/fs/ext2/xip.c b/fs/ext2/xip.c
index 8df7502..322a56b 100644
--- a/fs/ext2/xip.c
+++ b/fs/ext2/xip.c
@@ -70,8 +70,8 @@ void ext2_xip_verify_sb(struct super_block *sb)
 	    !sb->s_bdev->bd_disk->fops->direct_access) {
 		sbi->s_mount_opt &= (~EXT2_MOUNT_XIP);
 		ext2_msg(sb, KERN_WARNING,
-			     "warning: %s: ignoring xip option - "
-			     "not supported by bdev", __func__);
+			     "warning: ignoring xip option - "
+			     "not supported by bdev");
 	}
 }
 
-- 
1.6.4.2


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

* [PATCH v4] Unify log messages in ext2
  2009-11-19 14:32                 ` Jan Kara
@ 2009-11-19 18:12                   ` Alexey Fisher
  2009-11-20  9:56                     ` Jan Kara
  0 siblings, 1 reply; 20+ messages in thread
From: Alexey Fisher @ 2009-11-19 18:12 UTC (permalink / raw)
  To: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso
  Cc: Alexey Fisher

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

dmesg before patch:
[ 4893.684892] reservations ON
[ 4893.684896] xip option not supported
[ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
[ 4893.684964] EXT2-fs warning: maximal mount count reached, running
e2fsck is recommended
[ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

dmesg after patch:
[ 4893.684892] EXT2-fs (loop0): reservations ON
[ 4893.684896] EXT2-fs (loop0): xip option not supported
[ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
ext2
[ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
running e2fsck is recommended
[ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
bpg=8192, ipg=1280, mo=80010]

Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
Reviewed-by: Andreas Dilger <adilger@sun.com>
---
 fs/ext2/ext2.h  |    2 +-
 fs/ext2/inode.c |    6 +-
 fs/ext2/super.c |  168 ++++++++++++++++++++++++++++++------------------------
 fs/ext2/xip.c   |    5 +-
 4 files changed, 101 insertions(+), 80 deletions(-)

diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 9a8a8e2..da318b0 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -142,7 +142,7 @@ struct dentry *ext2_get_parent(struct dentry *child);
 /* super.c */
 extern void ext2_error (struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
-extern void ext2_warning (struct super_block *, const char *, const char *, ...)
+extern void ext2_msg(struct super_block *, const char *, const char *, ...)
 	__attribute__ ((format (printf, 3, 4)));
 extern void ext2_update_dynamic_rev (struct super_block *sb);
 extern void ext2_write_super (struct super_block *);
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index ade6340..71b032c 100644
--- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c
@@ -137,7 +137,8 @@ static int ext2_block_to_path(struct inode *inode,
 	int final = 0;
 
 	if (i_block < 0) {
-		ext2_warning (inode->i_sb, "ext2_block_to_path", "block < 0");
+		ext2_msg(inode->i_sb, KERN_WARNING,
+			"warning: %s: block < 0", __func__);
 	} else if (i_block < direct_blocks) {
 		offsets[n++] = i_block;
 		final = direct_blocks;
@@ -157,7 +158,8 @@ static int ext2_block_to_path(struct inode *inode,
 		offsets[n++] = i_block & (ptrs - 1);
 		final = ptrs;
 	} else {
-		ext2_warning (inode->i_sb, "ext2_block_to_path", "block > big");
+		ext2_msg(inode->i_sb, KERN_WARNING,
+			"warning: %s: block is too big", __func__);
 	}
 	if (boundary)
 		*boundary = final - 1 - (i_block & (ptrs - 1));
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 1a9ffee..6591dcc 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -58,27 +58,27 @@ void ext2_error (struct super_block * sb, const char * function,
 	}
 
 	va_start(args, fmt);
-	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
+	printk(KERN_CRIT "EXT2-fs (%s): error: %s: ", sb->s_id, function);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
 
 	if (test_opt(sb, ERRORS_PANIC))
-		panic("EXT2-fs panic from previous error\n");
+		panic("EXT2-fs: panic from previous error\n");
 	if (test_opt(sb, ERRORS_RO)) {
-		printk("Remounting filesystem read-only\n");
+		ext2_msg(sb, KERN_CRIT,
+			     "error: remounting filesystem read-only");
 		sb->s_flags |= MS_RDONLY;
 	}
 }
 
-void ext2_warning (struct super_block * sb, const char * function,
-		   const char * fmt, ...)
+void ext2_msg(struct super_block *sb, const char *prefix,
+		const char *fmt, ...)
 {
 	va_list args;
 
 	va_start(args, fmt);
-	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
-	       sb->s_id, function);
+	printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
 	vprintk(fmt, args);
 	printk("\n");
 	va_end(args);
@@ -91,9 +91,9 @@ void ext2_update_dynamic_rev(struct super_block *sb)
 	if (le32_to_cpu(es->s_rev_level) > EXT2_GOOD_OLD_REV)
 		return;
 
-	ext2_warning(sb, __func__,
-		     "updating to rev %d because of new feature flag, "
-		     "running e2fsck is recommended",
+	ext2_msg(sb, KERN_WARNING,
+		     "warning: updating to rev %d because of "
+		     "new feature flag, running e2fsck is recommended",
 		     EXT2_DYNAMIC_REV);
 
 	es->s_first_ino = cpu_to_le32(EXT2_GOOD_OLD_FIRST_INO);
@@ -419,10 +419,10 @@ static const match_table_t tokens = {
 	{Opt_err, NULL}
 };
 
-static int parse_options (char * options,
-			  struct ext2_sb_info *sbi)
+static int parse_options(char *options, struct super_block *sb)
 {
-	char * p;
+	char *p;
+	struct ext2_sb_info *sbi = EXT2_SB(sb);
 	substring_t args[MAX_OPT_ARGS];
 	int option;
 
@@ -505,7 +505,8 @@ static int parse_options (char * options,
 #else
 		case Opt_user_xattr:
 		case Opt_nouser_xattr:
-			printk("EXT2 (no)user_xattr options not supported\n");
+			ext2_msg(sb, KERN_INFO, "(no)user_xattr options"
+				"not supported");
 			break;
 #endif
 #ifdef CONFIG_EXT2_FS_POSIX_ACL
@@ -518,14 +519,15 @@ static int parse_options (char * options,
 #else
 		case Opt_acl:
 		case Opt_noacl:
-			printk("EXT2 (no)acl options not supported\n");
+			ext2_msg(sb, KERN_INFO,
+				"(no)acl options not supported");
 			break;
 #endif
 		case Opt_xip:
 #ifdef CONFIG_EXT2_FS_XIP
 			set_opt (sbi->s_mount_opt, XIP);
 #else
-			printk("EXT2 xip option not supported\n");
+			ext2_msg(sb, KERN_INFO, "xip option not supported");
 #endif
 			break;
 
@@ -542,19 +544,18 @@ static int parse_options (char * options,
 		case Opt_quota:
 		case Opt_usrquota:
 		case Opt_grpquota:
-			printk(KERN_ERR
-				"EXT2-fs: quota operations not supported.\n");
-
+			ext2_msg(sb, KERN_INFO,
+				"quota operations not supported");
 			break;
 #endif
 
 		case Opt_reservation:
 			set_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations ON\n");
+			ext2_msg(sb, KERN_INFO, "reservations ON");
 			break;
 		case Opt_noreservation:
 			clear_opt(sbi->s_mount_opt, RESERVATION);
-			printk("reservations OFF\n");
+			ext2_msg(sb, KERN_INFO, "reservations OFF");
 			break;
 		case Opt_ignore:
 			break;
@@ -573,34 +574,40 @@ static int ext2_setup_super (struct super_block * sb,
 	struct ext2_sb_info *sbi = EXT2_SB(sb);
 
 	if (le32_to_cpu(es->s_rev_level) > EXT2_MAX_SUPP_REV) {
-		printk ("EXT2-fs warning: revision level too high, "
-			"forcing read-only mode\n");
+		ext2_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 & EXT2_VALID_FS))
-		printk ("EXT2-fs warning: mounting unchecked fs, "
-			"running e2fsck is recommended\n");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting unchecked fs, "
+			"running e2fsck is recommended");
 	else if ((sbi->s_mount_state & EXT2_ERROR_FS))
-		printk ("EXT2-fs warning: mounting fs with errors, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: maximal mount count reached, "
-			"running e2fsck is recommended\n");
+		ext2_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 ("EXT2-fs warning: checktime reached, "
-			"running e2fsck is recommended\n");
+		(le32_to_cpu(es->s_lastcheck) +
+			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
+		ext2_msg(sb, KERN_WARNING,
+			"warning: checktime reached, "
+			"running e2fsck is recommended");
 	if (!le16_to_cpu(es->s_max_mnt_count))
 		es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
 	le16_add_cpu(&es->s_mnt_count, 1);
 	ext2_write_super(sb);
 	if (test_opt (sb, DEBUG))
-		printk ("[EXT II FS %s, %s, bs=%lu, fs=%lu, gc=%lu, "
-			"bpg=%lu, ipg=%lu, mo=%04lx]\n",
+		ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, "
+			"bpg=%lu, ipg=%lu, mo=%04lx]",
 			EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize,
 			sbi->s_frag_size,
 			sbi->s_groups_count,
@@ -767,7 +774,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	blocksize = sb_min_blocksize(sb, BLOCK_SIZE);
 	if (!blocksize) {
-		printk ("EXT2-fs: unable to set blocksize\n");
+		ext2_msg(sb, KERN_ERR, "error: unable to set blocksize");
 		goto failed_sbi;
 	}
 
@@ -783,7 +790,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 
 	if (!(bh = sb_bread(sb, logic_sb_block))) {
-		printk ("EXT2-fs: unable to read superblock\n");
+		ext2_msg(sb, KERN_ERR, "error: unable to read superblock");
 		goto failed_sbi;
 	}
 	/*
@@ -826,7 +833,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	
 	set_opt(sbi->s_mount_opt, RESERVATION);
 
-	if (!parse_options ((char *) data, sbi))
+	if (!parse_options((char *) data, sb))
 		goto failed_mount;
 
 	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
@@ -840,8 +847,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
 	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
-		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
-		       "running e2fsck is recommended\n");
+		ext2_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,
@@ -849,16 +857,16 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	 */
 	features = EXT2_HAS_INCOMPAT_FEATURE(sb, ~EXT2_FEATURE_INCOMPAT_SUPP);
 	if (features) {
-		printk("EXT2-fs: %s: couldn't mount because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR,	"error: couldn't mount because of "
+		       "unsupported optional features (%x)",
+			le32_to_cpu(features));
 		goto failed_mount;
 	}
 	if (!(sb->s_flags & MS_RDONLY) &&
 	    (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
-		printk("EXT2-fs: %s: couldn't mount RDWR because of "
-		       "unsupported optional features (%x).\n",
-		       sb->s_id, le32_to_cpu(features));
+		ext2_msg(sb, KERN_ERR, "error: couldn't mount RDWR because of "
+		       "unsupported optional features (%x)",
+		       le32_to_cpu(features));
 		goto failed_mount;
 	}
 
@@ -866,7 +874,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (ext2_use_xip(sb) && blocksize != PAGE_SIZE) {
 		if (!silent)
-			printk("XIP: Unsupported blocksize\n");
+			ext2_msg(sb, KERN_ERR,
+			"error: unsupported blocksize for xip");
 		goto failed_mount;
 	}
 
@@ -875,7 +884,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		brelse(bh);
 
 		if (!sb_set_blocksize(sb, blocksize)) {
-			printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
+			ext2_msg(sb, KERN_ERR, "error: blocksize is too small");
 			goto failed_sbi;
 		}
 
@@ -883,14 +892,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		offset = (sb_block*BLOCK_SIZE) % blocksize;
 		bh = sb_bread(sb, logic_sb_block);
 		if(!bh) {
-			printk("EXT2-fs: Couldn't read superblock on "
-			       "2nd try.\n");
+			ext2_msg(sb, KERN_ERR, "error: couldn't read"
+				"superblock on 2nd try");
 			goto failed_sbi;
 		}
 		es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
 		sbi->s_es = es;
 		if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
-			printk ("EXT2-fs: Magic mismatch, very weird !\n");
+			ext2_msg(sb, KERN_ERR, "error: magic mismatch");
 			goto failed_mount;
 		}
 	}
@@ -906,7 +915,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) ||
 		    !is_power_of_2(sbi->s_inode_size) ||
 		    (sbi->s_inode_size > blocksize)) {
-			printk ("EXT2-fs: unsupported inode size: %d\n",
+			ext2_msg(sb, KERN_ERR,
+				"error: unsupported inode size: %d",
 				sbi->s_inode_size);
 			goto failed_mount;
 		}
@@ -943,29 +953,33 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	if (sb->s_blocksize != bh->b_size) {
 		if (!silent)
-			printk ("VFS: Unsupported blocksize on dev "
-				"%s.\n", sb->s_id);
+			ext2_msg(sb, KERN_ERR, "error: unsupported blocksize");
 		goto failed_mount;
 	}
 
 	if (sb->s_blocksize != sbi->s_frag_size) {
-		printk ("EXT2-fs: fragsize %lu != blocksize %lu (not supported yet)\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: fragsize %lu != blocksize %lu"
+			"(not supported yet)",
 			sbi->s_frag_size, sb->s_blocksize);
 		goto failed_mount;
 	}
 
 	if (sbi->s_blocks_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #blocks per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: #blocks per group too big: %lu",
 			sbi->s_blocks_per_group);
 		goto failed_mount;
 	}
 	if (sbi->s_frags_per_group > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #fragments per group too big: %lu\n",
+		ext2_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 > sb->s_blocksize * 8) {
-		printk ("EXT2-fs: #inodes per group too big: %lu\n",
+		ext2_msg(sb, KERN_ERR,
+			"error: #inodes per group too big: %lu",
 			sbi->s_inodes_per_group);
 		goto failed_mount;
 	}
@@ -979,13 +993,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		   EXT2_DESC_PER_BLOCK(sb);
 	sbi->s_group_desc = kmalloc (db_count * sizeof (struct buffer_head *), GFP_KERNEL);
 	if (sbi->s_group_desc == NULL) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "error: not enough memory");
 		goto failed_mount;
 	}
 	bgl_lock_init(sbi->s_blockgroup_lock);
 	sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
 	if (!sbi->s_debts) {
-		printk ("EXT2-fs: not enough memory\n");
+		ext2_msg(sb, KERN_ERR, "error: not enough memory");
 		goto failed_mount_group_desc;
 	}
 	for (i = 0; i < db_count; i++) {
@@ -994,12 +1008,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 		if (!sbi->s_group_desc[i]) {
 			for (j = 0; j < i; j++)
 				brelse (sbi->s_group_desc[j]);
-			printk ("EXT2-fs: unable to read group descriptors\n");
+			ext2_msg(sb, KERN_ERR,
+				"error: unable to read group descriptors");
 			goto failed_mount_group_desc;
 		}
 	}
 	if (!ext2_check_descriptors (sb)) {
-		printk ("EXT2-fs: group descriptors corrupted!\n");
+		ext2_msg(sb, KERN_ERR, "group descriptors corrupted");
 		goto failed_mount2;
 	}
 	sbi->s_gdb_count = db_count;
@@ -1032,7 +1047,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 				ext2_count_dirs(sb));
 	}
 	if (err) {
-		printk(KERN_ERR "EXT2-fs: insufficient memory\n");
+		ext2_msg(sb, KERN_ERR, "error: insufficient memory");
 		goto failed_mount3;
 	}
 	/*
@@ -1048,27 +1063,28 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	}
 	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
+		ext2_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
 		goto failed_mount3;
 	}
 
 	sb->s_root = d_alloc_root(root);
 	if (!sb->s_root) {
 		iput(root);
-		printk(KERN_ERR "EXT2-fs: get root inode failed\n");
+		ext2_msg(sb, KERN_ERR, "error: get root inode failed");
 		ret = -ENOMEM;
 		goto failed_mount3;
 	}
 	if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
-		ext2_warning(sb, __func__,
-			"mounting ext3 filesystem as ext2");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: mounting ext3 filesystem as ext2");
 	ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);
 	return 0;
 
 cantfind_ext2:
 	if (!silent)
-		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
-		       sb->s_id);
+		ext2_msg(sb, KERN_ERR,
+			"error: can't find an ext2 filesystem on dev %s.",
+			sb->s_id);
 	goto failed_mount;
 failed_mount3:
 	percpu_counter_destroy(&sbi->s_freeblocks_counter);
@@ -1170,7 +1186,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	/*
 	 * Allow the "check" option to be passed as a remount option.
 	 */
-	if (!parse_options (data, sbi)) {
+	if (!parse_options(data, sb)) {
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1182,7 +1198,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 				    EXT2_MOUNT_XIP if not */
 
 	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
-		printk("XIP: Unsupported blocksize\n");
+		ext2_msg(sb, KERN_WARNING,
+			"warning: unsupported blocksize for xip");
 		err = -EINVAL;
 		goto restore_opts;
 	}
@@ -1191,8 +1208,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 	if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
 	    (old_mount_opt & EXT2_MOUNT_XIP)) &&
 	    invalidate_inodes(sb)) {
-		ext2_warning(sb, __func__, "refusing change of xip flag "
-			     "with busy inodes while remounting");
+		ext2_msg(sb, KERN_WARNING, "warning: refusing change of "
+			 "xip flag with busy inodes while remounting");
 		sbi->s_mount_opt &= ~EXT2_MOUNT_XIP;
 		sbi->s_mount_opt |= old_mount_opt & EXT2_MOUNT_XIP;
 	}
@@ -1216,9 +1233,10 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
 		__le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
 					       ~EXT2_FEATURE_RO_COMPAT_SUPP);
 		if (ret) {
-			printk("EXT2-fs: %s: couldn't remount RDWR because of "
-			       "unsupported optional features (%x).\n",
-			       sb->s_id, le32_to_cpu(ret));
+			ext2_msg(sb, KERN_WARNING,
+				"warning: couldn't remount RDWR because of "
+				"unsupported optional features (%x).",
+				le32_to_cpu(ret));
 			err = -EROFS;
 			goto restore_opts;
 		}
diff --git a/fs/ext2/xip.c b/fs/ext2/xip.c
index c18fbf3..322a56b 100644
--- a/fs/ext2/xip.c
+++ b/fs/ext2/xip.c
@@ -69,8 +69,9 @@ void ext2_xip_verify_sb(struct super_block *sb)
 	if ((sbi->s_mount_opt & EXT2_MOUNT_XIP) &&
 	    !sb->s_bdev->bd_disk->fops->direct_access) {
 		sbi->s_mount_opt &= (~EXT2_MOUNT_XIP);
-		ext2_warning(sb, __func__,
-			     "ignoring xip option - not supported by bdev");
+		ext2_msg(sb, KERN_WARNING,
+			     "warning: ignoring xip option - "
+			     "not supported by bdev");
 	}
 }
 
-- 
1.6.3.3


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

* Re: [PATCH v4] Unify log messages in ext2
  2009-11-19 18:12                   ` [PATCH v4] " Alexey Fisher
@ 2009-11-20  9:56                     ` Jan Kara
  2009-11-21 10:27                       ` Alexey Fisher
  0 siblings, 1 reply; 20+ messages in thread
From: Jan Kara @ 2009-11-20  9:56 UTC (permalink / raw)
  To: Alexey Fisher
  Cc: Jan Kara, Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso

On Thu 19-11-09 19:12:51, Alexey Fisher wrote:
> make messages produced by ext2 more unified. It should be
> easy to parse.
> 
> dmesg before patch:
> [ 4893.684892] reservations ON
> [ 4893.684896] xip option not supported
> [ 4893.684961] EXT2-fs warning: mounting ext3 filesystem as ext2
> [ 4893.684964] EXT2-fs warning: maximal mount count reached, running
> e2fsck is recommended
> [ 4893.684990] EXT II FS: 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> bpg=8192, ipg=1280, mo=80010]
> 
> dmesg after patch:
> [ 4893.684892] EXT2-fs (loop0): reservations ON
> [ 4893.684896] EXT2-fs (loop0): xip option not supported
> [ 4893.684961] EXT2-fs (loop0): warning: mounting ext3 filesystem as
> ext2
> [ 4893.684964] EXT2-fs (loop0): warning: maximal mount count reached,
> running e2fsck is recommended
> [ 4893.684990] EXT2-fs (loop0): 0.5b, 95/08/09, bs=1024, fs=1024, gc=2,
> bpg=8192, ipg=1280, mo=80010]
> 
> Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
> Reviewed-by: Andreas Dilger <adilger@sun.com>
  OK, merged the patch into my tree. It should go in the next merge
window.

								Honza
> ---
>  fs/ext2/ext2.h  |    2 +-
>  fs/ext2/inode.c |    6 +-
>  fs/ext2/super.c |  168 ++++++++++++++++++++++++++++++------------------------
>  fs/ext2/xip.c   |    5 +-
>  4 files changed, 101 insertions(+), 80 deletions(-)
> 
> diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
> index 9a8a8e2..da318b0 100644
> --- a/fs/ext2/ext2.h
> +++ b/fs/ext2/ext2.h
> @@ -142,7 +142,7 @@ struct dentry *ext2_get_parent(struct dentry *child);
>  /* super.c */
>  extern void ext2_error (struct super_block *, const char *, const char *, ...)
>  	__attribute__ ((format (printf, 3, 4)));
> -extern void ext2_warning (struct super_block *, const char *, const char *, ...)
> +extern void ext2_msg(struct super_block *, const char *, const char *, ...)
>  	__attribute__ ((format (printf, 3, 4)));
>  extern void ext2_update_dynamic_rev (struct super_block *sb);
>  extern void ext2_write_super (struct super_block *);
> diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
> index ade6340..71b032c 100644
> --- a/fs/ext2/inode.c
> +++ b/fs/ext2/inode.c
> @@ -137,7 +137,8 @@ static int ext2_block_to_path(struct inode *inode,
>  	int final = 0;
>  
>  	if (i_block < 0) {
> -		ext2_warning (inode->i_sb, "ext2_block_to_path", "block < 0");
> +		ext2_msg(inode->i_sb, KERN_WARNING,
> +			"warning: %s: block < 0", __func__);
>  	} else if (i_block < direct_blocks) {
>  		offsets[n++] = i_block;
>  		final = direct_blocks;
> @@ -157,7 +158,8 @@ static int ext2_block_to_path(struct inode *inode,
>  		offsets[n++] = i_block & (ptrs - 1);
>  		final = ptrs;
>  	} else {
> -		ext2_warning (inode->i_sb, "ext2_block_to_path", "block > big");
> +		ext2_msg(inode->i_sb, KERN_WARNING,
> +			"warning: %s: block is too big", __func__);
>  	}
>  	if (boundary)
>  		*boundary = final - 1 - (i_block & (ptrs - 1));
> diff --git a/fs/ext2/super.c b/fs/ext2/super.c
> index 1a9ffee..6591dcc 100644
> --- a/fs/ext2/super.c
> +++ b/fs/ext2/super.c
> @@ -58,27 +58,27 @@ void ext2_error (struct super_block * sb, const char * function,
>  	}
>  
>  	va_start(args, fmt);
> -	printk(KERN_CRIT "EXT2-fs error (device %s): %s: ",sb->s_id, function);
> +	printk(KERN_CRIT "EXT2-fs (%s): error: %s: ", sb->s_id, function);
>  	vprintk(fmt, args);
>  	printk("\n");
>  	va_end(args);
>  
>  	if (test_opt(sb, ERRORS_PANIC))
> -		panic("EXT2-fs panic from previous error\n");
> +		panic("EXT2-fs: panic from previous error\n");
>  	if (test_opt(sb, ERRORS_RO)) {
> -		printk("Remounting filesystem read-only\n");
> +		ext2_msg(sb, KERN_CRIT,
> +			     "error: remounting filesystem read-only");
>  		sb->s_flags |= MS_RDONLY;
>  	}
>  }
>  
> -void ext2_warning (struct super_block * sb, const char * function,
> -		   const char * fmt, ...)
> +void ext2_msg(struct super_block *sb, const char *prefix,
> +		const char *fmt, ...)
>  {
>  	va_list args;
>  
>  	va_start(args, fmt);
> -	printk(KERN_WARNING "EXT2-fs warning (device %s): %s: ",
> -	       sb->s_id, function);
> +	printk("%sEXT2-fs (%s): ", prefix, sb->s_id);
>  	vprintk(fmt, args);
>  	printk("\n");
>  	va_end(args);
> @@ -91,9 +91,9 @@ void ext2_update_dynamic_rev(struct super_block *sb)
>  	if (le32_to_cpu(es->s_rev_level) > EXT2_GOOD_OLD_REV)
>  		return;
>  
> -	ext2_warning(sb, __func__,
> -		     "updating to rev %d because of new feature flag, "
> -		     "running e2fsck is recommended",
> +	ext2_msg(sb, KERN_WARNING,
> +		     "warning: updating to rev %d because of "
> +		     "new feature flag, running e2fsck is recommended",
>  		     EXT2_DYNAMIC_REV);
>  
>  	es->s_first_ino = cpu_to_le32(EXT2_GOOD_OLD_FIRST_INO);
> @@ -419,10 +419,10 @@ static const match_table_t tokens = {
>  	{Opt_err, NULL}
>  };
>  
> -static int parse_options (char * options,
> -			  struct ext2_sb_info *sbi)
> +static int parse_options(char *options, struct super_block *sb)
>  {
> -	char * p;
> +	char *p;
> +	struct ext2_sb_info *sbi = EXT2_SB(sb);
>  	substring_t args[MAX_OPT_ARGS];
>  	int option;
>  
> @@ -505,7 +505,8 @@ static int parse_options (char * options,
>  #else
>  		case Opt_user_xattr:
>  		case Opt_nouser_xattr:
> -			printk("EXT2 (no)user_xattr options not supported\n");
> +			ext2_msg(sb, KERN_INFO, "(no)user_xattr options"
> +				"not supported");
>  			break;
>  #endif
>  #ifdef CONFIG_EXT2_FS_POSIX_ACL
> @@ -518,14 +519,15 @@ static int parse_options (char * options,
>  #else
>  		case Opt_acl:
>  		case Opt_noacl:
> -			printk("EXT2 (no)acl options not supported\n");
> +			ext2_msg(sb, KERN_INFO,
> +				"(no)acl options not supported");
>  			break;
>  #endif
>  		case Opt_xip:
>  #ifdef CONFIG_EXT2_FS_XIP
>  			set_opt (sbi->s_mount_opt, XIP);
>  #else
> -			printk("EXT2 xip option not supported\n");
> +			ext2_msg(sb, KERN_INFO, "xip option not supported");
>  #endif
>  			break;
>  
> @@ -542,19 +544,18 @@ static int parse_options (char * options,
>  		case Opt_quota:
>  		case Opt_usrquota:
>  		case Opt_grpquota:
> -			printk(KERN_ERR
> -				"EXT2-fs: quota operations not supported.\n");
> -
> +			ext2_msg(sb, KERN_INFO,
> +				"quota operations not supported");
>  			break;
>  #endif
>  
>  		case Opt_reservation:
>  			set_opt(sbi->s_mount_opt, RESERVATION);
> -			printk("reservations ON\n");
> +			ext2_msg(sb, KERN_INFO, "reservations ON");
>  			break;
>  		case Opt_noreservation:
>  			clear_opt(sbi->s_mount_opt, RESERVATION);
> -			printk("reservations OFF\n");
> +			ext2_msg(sb, KERN_INFO, "reservations OFF");
>  			break;
>  		case Opt_ignore:
>  			break;
> @@ -573,34 +574,40 @@ static int ext2_setup_super (struct super_block * sb,
>  	struct ext2_sb_info *sbi = EXT2_SB(sb);
>  
>  	if (le32_to_cpu(es->s_rev_level) > EXT2_MAX_SUPP_REV) {
> -		printk ("EXT2-fs warning: revision level too high, "
> -			"forcing read-only mode\n");
> +		ext2_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 & EXT2_VALID_FS))
> -		printk ("EXT2-fs warning: mounting unchecked fs, "
> -			"running e2fsck is recommended\n");
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: mounting unchecked fs, "
> +			"running e2fsck is recommended");
>  	else if ((sbi->s_mount_state & EXT2_ERROR_FS))
> -		printk ("EXT2-fs warning: mounting fs with errors, "
> -			"running e2fsck is recommended\n");
> +		ext2_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 ("EXT2-fs warning: maximal mount count reached, "
> -			"running e2fsck is recommended\n");
> +		ext2_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 ("EXT2-fs warning: checktime reached, "
> -			"running e2fsck is recommended\n");
> +		(le32_to_cpu(es->s_lastcheck) +
> +			le32_to_cpu(es->s_checkinterval) <= get_seconds()))
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: checktime reached, "
> +			"running e2fsck is recommended");
>  	if (!le16_to_cpu(es->s_max_mnt_count))
>  		es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
>  	le16_add_cpu(&es->s_mnt_count, 1);
>  	ext2_write_super(sb);
>  	if (test_opt (sb, DEBUG))
> -		printk ("[EXT II FS %s, %s, bs=%lu, fs=%lu, gc=%lu, "
> -			"bpg=%lu, ipg=%lu, mo=%04lx]\n",
> +		ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, "
> +			"bpg=%lu, ipg=%lu, mo=%04lx]",
>  			EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize,
>  			sbi->s_frag_size,
>  			sbi->s_groups_count,
> @@ -767,7 +774,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	 */
>  	blocksize = sb_min_blocksize(sb, BLOCK_SIZE);
>  	if (!blocksize) {
> -		printk ("EXT2-fs: unable to set blocksize\n");
> +		ext2_msg(sb, KERN_ERR, "error: unable to set blocksize");
>  		goto failed_sbi;
>  	}
>  
> @@ -783,7 +790,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	}
>  
>  	if (!(bh = sb_bread(sb, logic_sb_block))) {
> -		printk ("EXT2-fs: unable to read superblock\n");
> +		ext2_msg(sb, KERN_ERR, "error: unable to read superblock");
>  		goto failed_sbi;
>  	}
>  	/*
> @@ -826,7 +833,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	
>  	set_opt(sbi->s_mount_opt, RESERVATION);
>  
> -	if (!parse_options ((char *) data, sbi))
> +	if (!parse_options((char *) data, sb))
>  		goto failed_mount;
>  
>  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
> @@ -840,8 +847,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	    (EXT2_HAS_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT2_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
>  	     EXT2_HAS_INCOMPAT_FEATURE(sb, ~0U)))
> -		printk("EXT2-fs warning: feature flags set on rev 0 fs, "
> -		       "running e2fsck is recommended\n");
> +		ext2_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,
> @@ -849,16 +857,16 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	 */
>  	features = EXT2_HAS_INCOMPAT_FEATURE(sb, ~EXT2_FEATURE_INCOMPAT_SUPP);
>  	if (features) {
> -		printk("EXT2-fs: %s: couldn't mount because of "
> -		       "unsupported optional features (%x).\n",
> -		       sb->s_id, le32_to_cpu(features));
> +		ext2_msg(sb, KERN_ERR,	"error: couldn't mount because of "
> +		       "unsupported optional features (%x)",
> +			le32_to_cpu(features));
>  		goto failed_mount;
>  	}
>  	if (!(sb->s_flags & MS_RDONLY) &&
>  	    (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
> -		printk("EXT2-fs: %s: couldn't mount RDWR because of "
> -		       "unsupported optional features (%x).\n",
> -		       sb->s_id, le32_to_cpu(features));
> +		ext2_msg(sb, KERN_ERR, "error: couldn't mount RDWR because of "
> +		       "unsupported optional features (%x)",
> +		       le32_to_cpu(features));
>  		goto failed_mount;
>  	}
>  
> @@ -866,7 +874,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  
>  	if (ext2_use_xip(sb) && blocksize != PAGE_SIZE) {
>  		if (!silent)
> -			printk("XIP: Unsupported blocksize\n");
> +			ext2_msg(sb, KERN_ERR,
> +			"error: unsupported blocksize for xip");
>  		goto failed_mount;
>  	}
>  
> @@ -875,7 +884,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		brelse(bh);
>  
>  		if (!sb_set_blocksize(sb, blocksize)) {
> -			printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
> +			ext2_msg(sb, KERN_ERR, "error: blocksize is too small");
>  			goto failed_sbi;
>  		}
>  
> @@ -883,14 +892,14 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		offset = (sb_block*BLOCK_SIZE) % blocksize;
>  		bh = sb_bread(sb, logic_sb_block);
>  		if(!bh) {
> -			printk("EXT2-fs: Couldn't read superblock on "
> -			       "2nd try.\n");
> +			ext2_msg(sb, KERN_ERR, "error: couldn't read"
> +				"superblock on 2nd try");
>  			goto failed_sbi;
>  		}
>  		es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
>  		sbi->s_es = es;
>  		if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
> -			printk ("EXT2-fs: Magic mismatch, very weird !\n");
> +			ext2_msg(sb, KERN_ERR, "error: magic mismatch");
>  			goto failed_mount;
>  		}
>  	}
> @@ -906,7 +915,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) ||
>  		    !is_power_of_2(sbi->s_inode_size) ||
>  		    (sbi->s_inode_size > blocksize)) {
> -			printk ("EXT2-fs: unsupported inode size: %d\n",
> +			ext2_msg(sb, KERN_ERR,
> +				"error: unsupported inode size: %d",
>  				sbi->s_inode_size);
>  			goto failed_mount;
>  		}
> @@ -943,29 +953,33 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  
>  	if (sb->s_blocksize != bh->b_size) {
>  		if (!silent)
> -			printk ("VFS: Unsupported blocksize on dev "
> -				"%s.\n", sb->s_id);
> +			ext2_msg(sb, KERN_ERR, "error: unsupported blocksize");
>  		goto failed_mount;
>  	}
>  
>  	if (sb->s_blocksize != sbi->s_frag_size) {
> -		printk ("EXT2-fs: fragsize %lu != blocksize %lu (not supported yet)\n",
> +		ext2_msg(sb, KERN_ERR,
> +			"error: fragsize %lu != blocksize %lu"
> +			"(not supported yet)",
>  			sbi->s_frag_size, sb->s_blocksize);
>  		goto failed_mount;
>  	}
>  
>  	if (sbi->s_blocks_per_group > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #blocks per group too big: %lu\n",
> +		ext2_msg(sb, KERN_ERR,
> +			"error: #blocks per group too big: %lu",
>  			sbi->s_blocks_per_group);
>  		goto failed_mount;
>  	}
>  	if (sbi->s_frags_per_group > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #fragments per group too big: %lu\n",
> +		ext2_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 > sb->s_blocksize * 8) {
> -		printk ("EXT2-fs: #inodes per group too big: %lu\n",
> +		ext2_msg(sb, KERN_ERR,
> +			"error: #inodes per group too big: %lu",
>  			sbi->s_inodes_per_group);
>  		goto failed_mount;
>  	}
> @@ -979,13 +993,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		   EXT2_DESC_PER_BLOCK(sb);
>  	sbi->s_group_desc = kmalloc (db_count * sizeof (struct buffer_head *), GFP_KERNEL);
>  	if (sbi->s_group_desc == NULL) {
> -		printk ("EXT2-fs: not enough memory\n");
> +		ext2_msg(sb, KERN_ERR, "error: not enough memory");
>  		goto failed_mount;
>  	}
>  	bgl_lock_init(sbi->s_blockgroup_lock);
>  	sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
>  	if (!sbi->s_debts) {
> -		printk ("EXT2-fs: not enough memory\n");
> +		ext2_msg(sb, KERN_ERR, "error: not enough memory");
>  		goto failed_mount_group_desc;
>  	}
>  	for (i = 0; i < db_count; i++) {
> @@ -994,12 +1008,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  		if (!sbi->s_group_desc[i]) {
>  			for (j = 0; j < i; j++)
>  				brelse (sbi->s_group_desc[j]);
> -			printk ("EXT2-fs: unable to read group descriptors\n");
> +			ext2_msg(sb, KERN_ERR,
> +				"error: unable to read group descriptors");
>  			goto failed_mount_group_desc;
>  		}
>  	}
>  	if (!ext2_check_descriptors (sb)) {
> -		printk ("EXT2-fs: group descriptors corrupted!\n");
> +		ext2_msg(sb, KERN_ERR, "group descriptors corrupted");
>  		goto failed_mount2;
>  	}
>  	sbi->s_gdb_count = db_count;
> @@ -1032,7 +1047,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  				ext2_count_dirs(sb));
>  	}
>  	if (err) {
> -		printk(KERN_ERR "EXT2-fs: insufficient memory\n");
> +		ext2_msg(sb, KERN_ERR, "error: insufficient memory");
>  		goto failed_mount3;
>  	}
>  	/*
> @@ -1048,27 +1063,28 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	}
>  	if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
>  		iput(root);
> -		printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
> +		ext2_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
>  		goto failed_mount3;
>  	}
>  
>  	sb->s_root = d_alloc_root(root);
>  	if (!sb->s_root) {
>  		iput(root);
> -		printk(KERN_ERR "EXT2-fs: get root inode failed\n");
> +		ext2_msg(sb, KERN_ERR, "error: get root inode failed");
>  		ret = -ENOMEM;
>  		goto failed_mount3;
>  	}
>  	if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
> -		ext2_warning(sb, __func__,
> -			"mounting ext3 filesystem as ext2");
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: mounting ext3 filesystem as ext2");
>  	ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);
>  	return 0;
>  
>  cantfind_ext2:
>  	if (!silent)
> -		printk("VFS: Can't find an ext2 filesystem on dev %s.\n",
> -		       sb->s_id);
> +		ext2_msg(sb, KERN_ERR,
> +			"error: can't find an ext2 filesystem on dev %s.",
> +			sb->s_id);
>  	goto failed_mount;
>  failed_mount3:
>  	percpu_counter_destroy(&sbi->s_freeblocks_counter);
> @@ -1170,7 +1186,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  	/*
>  	 * Allow the "check" option to be passed as a remount option.
>  	 */
> -	if (!parse_options (data, sbi)) {
> +	if (!parse_options(data, sb)) {
>  		err = -EINVAL;
>  		goto restore_opts;
>  	}
> @@ -1182,7 +1198,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  				    EXT2_MOUNT_XIP if not */
>  
>  	if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
> -		printk("XIP: Unsupported blocksize\n");
> +		ext2_msg(sb, KERN_WARNING,
> +			"warning: unsupported blocksize for xip");
>  		err = -EINVAL;
>  		goto restore_opts;
>  	}
> @@ -1191,8 +1208,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  	if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
>  	    (old_mount_opt & EXT2_MOUNT_XIP)) &&
>  	    invalidate_inodes(sb)) {
> -		ext2_warning(sb, __func__, "refusing change of xip flag "
> -			     "with busy inodes while remounting");
> +		ext2_msg(sb, KERN_WARNING, "warning: refusing change of "
> +			 "xip flag with busy inodes while remounting");
>  		sbi->s_mount_opt &= ~EXT2_MOUNT_XIP;
>  		sbi->s_mount_opt |= old_mount_opt & EXT2_MOUNT_XIP;
>  	}
> @@ -1216,9 +1233,10 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
>  		__le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
>  					       ~EXT2_FEATURE_RO_COMPAT_SUPP);
>  		if (ret) {
> -			printk("EXT2-fs: %s: couldn't remount RDWR because of "
> -			       "unsupported optional features (%x).\n",
> -			       sb->s_id, le32_to_cpu(ret));
> +			ext2_msg(sb, KERN_WARNING,
> +				"warning: couldn't remount RDWR because of "
> +				"unsupported optional features (%x).",
> +				le32_to_cpu(ret));
>  			err = -EROFS;
>  			goto restore_opts;
>  		}
> diff --git a/fs/ext2/xip.c b/fs/ext2/xip.c
> index c18fbf3..322a56b 100644
> --- a/fs/ext2/xip.c
> +++ b/fs/ext2/xip.c
> @@ -69,8 +69,9 @@ void ext2_xip_verify_sb(struct super_block *sb)
>  	if ((sbi->s_mount_opt & EXT2_MOUNT_XIP) &&
>  	    !sb->s_bdev->bd_disk->fops->direct_access) {
>  		sbi->s_mount_opt &= (~EXT2_MOUNT_XIP);
> -		ext2_warning(sb, __func__,
> -			     "ignoring xip option - not supported by bdev");
> +		ext2_msg(sb, KERN_WARNING,
> +			     "warning: ignoring xip option - "
> +			     "not supported by bdev");
>  	}
>  }
>  
> -- 
> 1.6.3.3
> 
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

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

* Re: [PATCH v4] Unify log messages in ext2
  2009-11-20  9:56                     ` Jan Kara
@ 2009-11-21 10:27                       ` Alexey Fisher
  0 siblings, 0 replies; 20+ messages in thread
From: Alexey Fisher @ 2009-11-21 10:27 UTC (permalink / raw)
  To: Jan Kara; +Cc: Eric Sandeen, Andreas Dilger, linux-ext4, Theodore Tso

Am Freitag, den 20.11.2009, 10:56 +0100 schrieb Jan Kara:
> On Thu 19-11-09 19:12:51, Alexey Fisher wrote:
> > make messages produced by ext2 more unified. It should be
> > easy to parse.
> > 
> > dmesg before patch:
> > Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
> > Reviewed-by: Andreas Dilger <adilger@sun.com>
>   OK, merged the patch into my tree. It should go in the next merge
> window.

Thank you,
I send same patch for ext3 too.

Regards,
	Alexey


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

end of thread, other threads:[~2009-11-21 10:27 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-04 18:39 Corrupt superblocks fabian-buettner
2009-11-04 19:21 ` Eric Sandeen
2009-11-04 20:40   ` [PATCH] make unified logs on ext2 Alexey Fisher
2009-11-05  4:50     ` Andreas Dilger
2009-11-05  7:33       ` [PATCH] Unify log messages in ext2 Alexey Fisher
2009-11-06 14:53         ` Alexey Fisher
2009-11-17 21:23           ` Jan Kara
2009-11-18 19:26             ` Alexey Fisher
2009-11-19 11:17             ` [PATCH v2] " Alexey Fisher
2009-11-19 11:22               ` Alexey Fisher
2009-11-19 11:30               ` [PATCH v3] " Alexey Fisher
2009-11-19 14:32                 ` Jan Kara
2009-11-19 18:12                   ` [PATCH v4] " Alexey Fisher
2009-11-20  9:56                     ` Jan Kara
2009-11-21 10:27                       ` Alexey Fisher
2009-11-04 21:56   ` Corrupt superblocks fabian-buettner
2009-11-04 21:59     ` Eric Sandeen
2009-11-04 22:07       ` fabian-buettner
2009-11-04 22:24         ` Eric Sandeen
2009-11-09 20:18           ` fabian-buettner

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.