2009-11-21 10:25:17

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v1] Unify log messages in ext3

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

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

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

Signed-off-by: Alexey Fisher <[email protected]>
---
fs/ext3/super.c | 422 +++++++++++++++++++++++++++++--------------------------
1 files changed, 223 insertions(+), 199 deletions(-)

diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 427496c..9931464 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -135,12 +135,24 @@ void ext3_journal_abort_handle(const char *caller, const char *err_fn,
if (is_handle_aborted(handle))
return;

- printk(KERN_ERR "%s: aborting transaction: %s in %s\n",
- caller, errstr, err_fn);
+ printk(KERN_ERR "EXT3-fs: %s: aborting transaction: %s in %s\n",
+ caller, errstr, err_fn);

journal_abort_handle(handle);
}

+void ext3_msg(struct super_block *sb, const char *prefix,
+ const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ printk("%sEXT3-fs (%s): ", prefix, sb->s_id);
+ vprintk(fmt, args);
+ printk("\n");
+ va_end(args);
+}
+
/* Deal with the reporting of failure conditions on a filesystem such as
* inconsistencies detected or read IO failures.
*
@@ -174,12 +186,13 @@ static void ext3_handle_error(struct super_block *sb)
journal_abort(journal, -EIO);
}
if (test_opt (sb, ERRORS_RO)) {
- printk (KERN_CRIT "Remounting filesystem read-only\n");
+ ext3_msg(sb, KERN_CRIT,
+ "error: remounting filesystem read-only");
sb->s_flags |= MS_RDONLY;
}
ext3_commit_super(sb, es, 1);
if (test_opt(sb, ERRORS_PANIC))
- panic("EXT3-fs (device %s): panic forced after error\n",
+ panic("EXT3-fs (%s): panic forced after error\n",
sb->s_id);
}

@@ -247,8 +260,7 @@ void __ext3_std_error (struct super_block * sb, const char * function,
return;

errstr = ext3_decode_error(sb, errno, nbuf);
- printk (KERN_CRIT "EXT3-fs error (device %s) in %s: %s\n",
- sb->s_id, function, errstr);
+ ext3_msg(sb, KERN_CRIT, "error in %s: %s", function, errstr);

ext3_handle_error(sb);
}
@@ -268,21 +280,22 @@ void ext3_abort (struct super_block * sb, const char * function,
{
va_list args;

- printk (KERN_CRIT "ext3_abort called.\n");
+ ext3_msg(sb, KERN_CRIT, "ext3_abort called");

va_start(args, fmt);
- printk(KERN_CRIT "EXT3-fs error (device %s): %s: ",sb->s_id, function);
+ printk(KERN_CRIT "EXT3-fs (%s): error: %s: ", sb->s_id, function);
vprintk(fmt, args);
printk("\n");
va_end(args);

if (test_opt(sb, ERRORS_PANIC))
- panic("EXT3-fs panic from previous error\n");
+ panic("EXT3-fs: panic from previous error\n");

if (sb->s_flags & MS_RDONLY)
return;

- printk(KERN_CRIT "Remounting filesystem read-only\n");
+ ext3_msg(sb, KERN_CRIT,
+ "error: remounting filesystem read-only");
EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS;
sb->s_flags |= MS_RDONLY;
EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT;
@@ -296,7 +309,7 @@ void ext3_warning (struct super_block * sb, const char * function,
va_list args;

va_start(args, fmt);
- printk(KERN_WARNING "EXT3-fs warning (device %s): %s: ",
+ printk(KERN_WARNING "EXT3-fs (%s): warning: %s: ",
sb->s_id, function);
vprintk(fmt, args);
printk("\n");
@@ -310,10 +323,10 @@ void ext3_update_dynamic_rev(struct super_block *sb)
if (le32_to_cpu(es->s_rev_level) > EXT3_GOOD_OLD_REV)
return;

- ext3_warning(sb, __func__,
- "updating to rev %d because of new feature flag, "
- "running e2fsck is recommended",
- EXT3_DYNAMIC_REV);
+ ext3_msg(sb, KERN_WARNING,
+ "warning: updating to rev %d because of "
+ "new feature flag, running e2fsck is recommended",
+ EXT3_DYNAMIC_REV);

es->s_first_ino = cpu_to_le32(EXT3_GOOD_OLD_FIRST_INO);
es->s_inode_size = cpu_to_le16(EXT3_GOOD_OLD_INODE_SIZE);
@@ -342,8 +355,9 @@ static struct block_device *ext3_blkdev_get(dev_t dev)
return bdev;

fail:
- printk(KERN_ERR "EXT3: failed to open journal device %s: %ld\n",
- __bdevname(dev, b), PTR_ERR(bdev));
+ printk(KERN_ERR "EXT3-fs: failed to open journal device %s: %ld\n",
+ __bdevname(dev, b), PTR_ERR(bdev));
+
return NULL;
}

@@ -378,13 +392,13 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi)
{
struct list_head *l;

- printk(KERN_ERR "sb orphan head is %d\n",
+ ext3_msg(sb, KERN_ERR, "error: sb orphan head is %d",
le32_to_cpu(sbi->s_es->s_last_orphan));

- printk(KERN_ERR "sb_info orphan list:\n");
+ ext3_msg(sb, KERN_ERR, "sb_info orphan list:");
list_for_each(l, &sbi->s_orphan) {
struct inode *inode = orphan_list_entry(l);
- printk(KERN_ERR " "
+ ext3_msg(sb, KERN_ERR, " "
"inode %s:%lu at %p: mode %o, nlink %d, next %d\n",
inode->i_sb->s_id, inode->i_ino, inode,
inode->i_mode, inode->i_nlink,
@@ -956,7 +970,8 @@ static int parse_options (char *options, struct super_block *sb,
#else
case Opt_user_xattr:
case Opt_nouser_xattr:
- printk("EXT3 (no)user_xattr options not supported\n");
+ ext3_msg(sb, KERN_INFO,
+ "(no)user_xattr options not supported");
break;
#endif
#ifdef CONFIG_EXT3_FS_POSIX_ACL
@@ -969,7 +984,8 @@ static int parse_options (char *options, struct super_block *sb,
#else
case Opt_acl:
case Opt_noacl:
- printk("EXT3 (no)acl options not supported\n");
+ ext3_msg(sb, KERN_INFO,
+ "(no)acl options not supported");
break;
#endif
case Opt_reservation:
@@ -985,16 +1001,16 @@ static int parse_options (char *options, struct super_block *sb,
user to specify an existing inode to be the
journal file. */
if (is_remount) {
- printk(KERN_ERR "EXT3-fs: cannot specify "
- "journal on remount\n");
+ ext3_msg(sb, KERN_ERR, "error: cannot specify "
+ "journal on remount");
return 0;
}
set_opt (sbi->s_mount_opt, UPDATE_JOURNAL);
break;
case Opt_journal_inum:
if (is_remount) {
- printk(KERN_ERR "EXT3-fs: cannot specify "
- "journal on remount\n");
+ ext3_msg(sb, KERN_ERR, "error: cannot specify "
+ "journal on remount");
return 0;
}
if (match_int(&args[0], &option))
@@ -1003,8 +1019,8 @@ static int parse_options (char *options, struct super_block *sb,
break;
case Opt_journal_dev:
if (is_remount) {
- printk(KERN_ERR "EXT3-fs: cannot specify "
- "journal on remount\n");
+ ext3_msg(sb, KERN_ERR, "error: cannot specify "
+ "journal on remount");
return 0;
}
if (match_int(&args[0], &option))
@@ -1036,12 +1052,11 @@ static int parse_options (char *options, struct super_block *sb,
if ((sbi->s_mount_opt & EXT3_MOUNT_DATA_FLAGS)
== data_opt)
break;
- printk(KERN_ERR
- "EXT3-fs (device %s): Cannot change "
+ ext3_msg(sb, KERN_ERR,
+ "error: cannot change "
"data mode on remount. The filesystem "
"is mounted in data=%s mode and you "
- "try to remount it in data=%s mode.\n",
- sb->s_id,
+ "try to remount it in data=%s mode.",
data_mode_string(sbi->s_mount_opt &
EXT3_MOUNT_DATA_FLAGS),
data_mode_string(data_opt));
@@ -1066,31 +1081,31 @@ static int parse_options (char *options, struct super_block *sb,
set_qf_name:
if (sb_any_quota_loaded(sb) &&
!sbi->s_qf_names[qtype]) {
- printk(KERN_ERR
- "EXT3-fs: Cannot change journaled "
- "quota options when quota turned on.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: cannot change journaled "
+ "quota options when quota turned on.");
return 0;
}
qname = match_strdup(&args[0]);
if (!qname) {
- printk(KERN_ERR
- "EXT3-fs: not enough memory for "
- "storing quotafile name.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: not enough memory for "
+ "storing quotafile name.");
return 0;
}
if (sbi->s_qf_names[qtype] &&
strcmp(sbi->s_qf_names[qtype], qname)) {
- printk(KERN_ERR
- "EXT3-fs: %s quota file already "
- "specified.\n", QTYPE2NAME(qtype));
+ ext3_msg(sb, KERN_ERR,
+ "error: %s quota file already "
+ "specified.", QTYPE2NAME(qtype));
kfree(qname);
return 0;
}
sbi->s_qf_names[qtype] = qname;
if (strchr(sbi->s_qf_names[qtype], '/')) {
- printk(KERN_ERR
- "EXT3-fs: quotafile must be on "
- "filesystem root.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: quotafile must be on "
+ "filesystem root.");
kfree(sbi->s_qf_names[qtype]);
sbi->s_qf_names[qtype] = NULL;
return 0;
@@ -1105,9 +1120,9 @@ set_qf_name:
clear_qf_name:
if (sb_any_quota_loaded(sb) &&
sbi->s_qf_names[qtype]) {
- printk(KERN_ERR "EXT3-fs: Cannot change "
+ ext3_msg(sb, KERN_ERR, "error: cannot change "
"journaled quota options when "
- "quota turned on.\n");
+ "quota turned on.");
return 0;
}
/*
@@ -1124,9 +1139,9 @@ clear_qf_name:
set_qf_format:
if (sb_any_quota_loaded(sb) &&
sbi->s_jquota_fmt != qfmt) {
- printk(KERN_ERR "EXT3-fs: Cannot change "
+ ext3_msg(sb, KERN_ERR, "error: cannot change "
"journaled quota options when "
- "quota turned on.\n");
+ "quota turned on.");
return 0;
}
sbi->s_jquota_fmt = qfmt;
@@ -1142,8 +1157,8 @@ set_qf_format:
break;
case Opt_noquota:
if (sb_any_quota_loaded(sb)) {
- printk(KERN_ERR "EXT3-fs: Cannot change quota "
- "options when quota turned on.\n");
+ ext3_msg(sb, KERN_ERR, "error: cannot change "
+ "quota options when quota turned on.");
return 0;
}
clear_opt(sbi->s_mount_opt, QUOTA);
@@ -1154,8 +1169,8 @@ set_qf_format:
case Opt_quota:
case Opt_usrquota:
case Opt_grpquota:
- printk(KERN_ERR
- "EXT3-fs: quota options not supported.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: quota options not supported.");
break;
case Opt_usrjquota:
case Opt_grpjquota:
@@ -1163,9 +1178,9 @@ set_qf_format:
case Opt_offgrpjquota:
case Opt_jqfmt_vfsold:
case Opt_jqfmt_vfsv0:
- printk(KERN_ERR
- "EXT3-fs: journaled quota options not "
- "supported.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: journaled quota options not "
+ "supported.");
break;
case Opt_noquota:
break;
@@ -1185,8 +1200,9 @@ set_qf_format:
break;
case Opt_resize:
if (!is_remount) {
- printk("EXT3-fs: resize option only available "
- "for remount\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: resize option only available "
+ "for remount");
return 0;
}
if (match_int(&args[0], &option) != 0)
@@ -1200,9 +1216,9 @@ set_qf_format:
clear_opt(sbi->s_mount_opt, NOBH);
break;
default:
- printk (KERN_ERR
- "EXT3-fs: Unrecognized mount option \"%s\" "
- "or missing value\n", p);
+ ext3_msg(sb, KERN_ERR,
+ "error: unrecognized mount option \"%s\" "
+ "or missing valuen", p);
return 0;
}
}
@@ -1220,21 +1236,21 @@ set_qf_format:
(sbi->s_mount_opt & EXT3_MOUNT_GRPQUOTA)) ||
(sbi->s_qf_names[GRPQUOTA] &&
(sbi->s_mount_opt & EXT3_MOUNT_USRQUOTA))) {
- printk(KERN_ERR "EXT3-fs: old and new quota "
- "format mixing.\n");
+ ext3_msg(sb, KERN_ERR, "error: old and new quota "
+ "format mixing.");
return 0;
}

if (!sbi->s_jquota_fmt) {
- printk(KERN_ERR "EXT3-fs: journaled quota format "
- "not specified.\n");
+ ext3_msg(sb, KERN_ERR, "error: journaled quota format "
+ "not specified.");
return 0;
}
} else {
if (sbi->s_jquota_fmt) {
- printk(KERN_ERR "EXT3-fs: journaled quota format "
+ ext3_msg(sb, KERN_ERR, "error: journaled quota format "
"specified with no journaling "
- "enabled.\n");
+ "enabled.");
return 0;
}
}
@@ -1249,31 +1265,33 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
int res = 0;

if (le32_to_cpu(es->s_rev_level) > EXT3_MAX_SUPP_REV) {
- printk (KERN_ERR "EXT3-fs warning: revision level too high, "
- "forcing read-only mode\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: revision level too high, "
+ "forcing read-only mode");
res = MS_RDONLY;
}
if (read_only)
return res;
if (!(sbi->s_mount_state & EXT3_VALID_FS))
- printk (KERN_WARNING "EXT3-fs warning: mounting unchecked fs, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: mounting unchecked fs, "
+ "running e2fsck is recommended");
else if ((sbi->s_mount_state & EXT3_ERROR_FS))
- printk (KERN_WARNING
- "EXT3-fs warning: mounting fs with errors, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: mounting fs with errors, "
+ "running e2fsck is recommended");
else if ((__s16) le16_to_cpu(es->s_max_mnt_count) >= 0 &&
le16_to_cpu(es->s_mnt_count) >=
(unsigned short) (__s16) le16_to_cpu(es->s_max_mnt_count))
- printk (KERN_WARNING
- "EXT3-fs warning: maximal mount count reached, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: maximal mount count reached, "
+ "running e2fsck is recommended");
else if (le32_to_cpu(es->s_checkinterval) &&
(le32_to_cpu(es->s_lastcheck) +
le32_to_cpu(es->s_checkinterval) <= get_seconds()))
- printk (KERN_WARNING
- "EXT3-fs warning: checktime reached, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: checktime reached, "
+ "running e2fsck is recommended");
#if 0
/* @@@ We _will_ want to clear the valid bit if we find
inconsistencies, to force a fsck at reboot. But for
@@ -1290,22 +1308,20 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,

ext3_commit_super(sb, es, 1);
if (test_opt(sb, DEBUG))
- printk(KERN_INFO "[EXT3 FS bs=%lu, gc=%lu, "
- "bpg=%lu, ipg=%lu, mo=%04lx]\n",
+ ext3_msg(sb, KERN_INFO, "[bs=%lu, gc=%lu, "
+ "bpg=%lu, ipg=%lu, mo=%04lx]",
sb->s_blocksize,
sbi->s_groups_count,
EXT3_BLOCKS_PER_GROUP(sb),
EXT3_INODES_PER_GROUP(sb),
sbi->s_mount_opt);

- printk(KERN_INFO "EXT3 FS on %s, ", sb->s_id);
if (EXT3_SB(sb)->s_journal->j_inode == NULL) {
char b[BDEVNAME_SIZE];
-
- printk("external journal on %s\n",
+ ext3_msg(sb, KERN_INFO, "using externa journal on %s",
bdevname(EXT3_SB(sb)->s_journal->j_dev, b));
} else {
- printk("internal journal\n");
+ ext3_msg(sb, KERN_INFO, "using internal journaln");
}
return res;
}
@@ -1399,8 +1415,8 @@ static void ext3_orphan_cleanup (struct super_block * sb,
}

if (bdev_read_only(sb->s_bdev)) {
- printk(KERN_ERR "EXT3-fs: write access "
- "unavailable, skipping orphan cleanup.\n");
+ ext3_msg(sb, KERN_ERR, "error: write access "
+ "unavailable, skipping orphan cleanup.");
return;
}

@@ -1414,8 +1430,7 @@ static void ext3_orphan_cleanup (struct super_block * sb,
}

if (s_flags & MS_RDONLY) {
- printk(KERN_INFO "EXT3-fs: %s: orphan cleanup on readonly fs\n",
- sb->s_id);
+ ext3_msg(sb, KERN_INFO, "orphan cleanup on readonly fs");
sb->s_flags &= ~MS_RDONLY;
}
#ifdef CONFIG_QUOTA
@@ -1426,9 +1441,9 @@ static void ext3_orphan_cleanup (struct super_block * sb,
if (EXT3_SB(sb)->s_qf_names[i]) {
int ret = ext3_quota_on_mount(sb, i);
if (ret < 0)
- printk(KERN_ERR
- "EXT3-fs: Cannot turn on journaled "
- "quota: error %d\n", ret);
+ ext3_msg(sb, KERN_ERR,
+ "error: cannot turn on journaled "
+ "quota: %d", ret);
}
}
#endif
@@ -1466,11 +1481,11 @@ static void ext3_orphan_cleanup (struct super_block * sb,
#define PLURAL(x) (x), ((x)==1) ? "" : "s"

if (nr_orphans)
- printk(KERN_INFO "EXT3-fs: %s: %d orphan inode%s deleted\n",
- sb->s_id, PLURAL(nr_orphans));
+ ext3_msg(sb, KERN_INFO, "%d orphan inode%s deleted",
+ PLURAL(nr_orphans));
if (nr_truncates)
- printk(KERN_INFO "EXT3-fs: %s: %d truncate%s cleaned up\n",
- sb->s_id, PLURAL(nr_truncates));
+ ext3_msg(sb, KERN_INFO, "%d truncate%s cleaned up",
+ PLURAL(nr_truncates));
#ifdef CONFIG_QUOTA
/* Turn quotas off */
for (i = 0; i < MAXQUOTAS; i++) {
@@ -1590,7 +1605,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)

blocksize = sb_min_blocksize(sb, EXT3_MIN_BLOCK_SIZE);
if (!blocksize) {
- printk(KERN_ERR "EXT3-fs: unable to set blocksize\n");
+ ext3_msg(sb, KERN_ERR, "error: unable to set blocksize");
goto out_fail;
}

@@ -1606,7 +1621,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
}

if (!(bh = sb_bread(sb, logic_sb_block))) {
- printk (KERN_ERR "EXT3-fs: unable to read superblock\n");
+ ext3_msg(sb, KERN_ERR, "error: unable to read superblock");
goto out_fail;
}
/*
@@ -1665,9 +1680,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
(EXT3_HAS_COMPAT_FEATURE(sb, ~0U) ||
EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U)))
- printk(KERN_WARNING
- "EXT3-fs warning: feature flags set on rev 0 fs, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: feature flags set on rev 0 fs, "
+ "running e2fsck is recommended");
/*
* Check feature flags regardless of the revision level, since we
* previously didn't change the revision level when setting the flags,
@@ -1675,25 +1690,25 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
*/
features = EXT3_HAS_INCOMPAT_FEATURE(sb, ~EXT3_FEATURE_INCOMPAT_SUPP);
if (features) {
- printk(KERN_ERR "EXT3-fs: %s: couldn't mount because of "
- "unsupported optional features (%x).\n",
- sb->s_id, le32_to_cpu(features));
+ ext3_msg(sb, KERN_ERR,
+ "error: couldn't mount because of unsupported "
+ "optional features (%x)", le32_to_cpu(features));
goto failed_mount;
}
features = EXT3_HAS_RO_COMPAT_FEATURE(sb, ~EXT3_FEATURE_RO_COMPAT_SUPP);
if (!(sb->s_flags & MS_RDONLY) && features) {
- printk(KERN_ERR "EXT3-fs: %s: couldn't mount RDWR because of "
- "unsupported optional features (%x).\n",
- sb->s_id, le32_to_cpu(features));
+ ext3_msg(sb, KERN_ERR,
+ "error: couldn't mount RDWR because of unsupported "
+ "optional features (%x)", le32_to_cpu(features));
goto failed_mount;
}
blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size);

if (blocksize < EXT3_MIN_BLOCK_SIZE ||
blocksize > EXT3_MAX_BLOCK_SIZE) {
- printk(KERN_ERR
- "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n",
- blocksize, sb->s_id);
+ ext3_msg(sb, KERN_ERR,
+ "error: couldn't mount because of unsupported "
+ "filesystem blocksize %d", blocksize);
goto failed_mount;
}

@@ -1704,30 +1719,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
* than the hardware sectorsize for the machine.
*/
if (blocksize < hblock) {
- printk(KERN_ERR "EXT3-fs: blocksize %d too small for "
- "device blocksize %d.\n", blocksize, hblock);
+ ext3_msg(sb, KERN_ERR,
+ "error: fsblocksize %d too small for "
+ "hardware sectorsize %d", blocksize, hblock);
goto failed_mount;
}

brelse (bh);
if (!sb_set_blocksize(sb, blocksize)) {
- printk(KERN_ERR "EXT3-fs: bad blocksize %d.\n",
- blocksize);
+ ext3_msg(sb, KERN_ERR,
+ "error: bad blocksize %d", blocksize);
goto out_fail;
}
logic_sb_block = (sb_block * EXT3_MIN_BLOCK_SIZE) / blocksize;
offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize;
bh = sb_bread(sb, logic_sb_block);
if (!bh) {
- printk(KERN_ERR
- "EXT3-fs: Can't read superblock on 2nd try.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: can't read superblock on 2nd try");
goto failed_mount;
}
es = (struct ext3_super_block *)(((char *)bh->b_data) + offset);
sbi->s_es = es;
if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) {
- printk (KERN_ERR
- "EXT3-fs: Magic mismatch, very weird !\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: magic mismatch");
goto failed_mount;
}
}
@@ -1743,8 +1759,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
if ((sbi->s_inode_size < EXT3_GOOD_OLD_INODE_SIZE) ||
(!is_power_of_2(sbi->s_inode_size)) ||
(sbi->s_inode_size > blocksize)) {
- printk (KERN_ERR
- "EXT3-fs: unsupported inode size: %d\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: unsupported inode size: %d",
sbi->s_inode_size);
goto failed_mount;
}
@@ -1752,8 +1768,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
sbi->s_frag_size = EXT3_MIN_FRAG_SIZE <<
le32_to_cpu(es->s_log_frag_size);
if (blocksize != sbi->s_frag_size) {
- printk(KERN_ERR
- "EXT3-fs: fragsize %lu != blocksize %u (unsupported)\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: fragsize %lu != blocksize %u (unsupported)",
sbi->s_frag_size, blocksize);
goto failed_mount;
}
@@ -1789,31 +1805,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
}

if (sbi->s_blocks_per_group > blocksize * 8) {
- printk (KERN_ERR
- "EXT3-fs: #blocks per group too big: %lu\n",
+ ext3_msg(sb, KERN_ERR,
+ "#blocks per group too big: %lu",
sbi->s_blocks_per_group);
goto failed_mount;
}
if (sbi->s_frags_per_group > blocksize * 8) {
- printk (KERN_ERR
- "EXT3-fs: #fragments per group too big: %lu\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: #fragments per group too big: %lu",
sbi->s_frags_per_group);
goto failed_mount;
}
if (sbi->s_inodes_per_group > blocksize * 8) {
- printk (KERN_ERR
- "EXT3-fs: #inodes per group too big: %lu\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: #inodes per group too big: %lu",
sbi->s_inodes_per_group);
goto failed_mount;
}

if (le32_to_cpu(es->s_blocks_count) >
(sector_t)(~0ULL) >> (sb->s_blocksize_bits - 9)) {
- printk(KERN_ERR "EXT3-fs: filesystem on %s:"
- " too large to mount safely\n", sb->s_id);
+ ext3_msg(sb, KERN_ERR,
+ "error: filesystem is too large to mount safely");
if (sizeof(sector_t) < 8)
- printk(KERN_WARNING "EXT3-fs: CONFIG_LBDAF not "
- "enabled\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: CONFIG_LBDAF not enabled");
goto failed_mount;
}

@@ -1827,7 +1843,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *),
GFP_KERNEL);
if (sbi->s_group_desc == NULL) {
- printk (KERN_ERR "EXT3-fs: not enough memory\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: not enough memory");
goto failed_mount;
}

@@ -1837,14 +1854,15 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
block = descriptor_loc(sb, logic_sb_block, i);
sbi->s_group_desc[i] = sb_bread(sb, block);
if (!sbi->s_group_desc[i]) {
- printk (KERN_ERR "EXT3-fs: "
- "can't read group descriptor %d\n", i);
+ ext3_msg(sb, KERN_ERR,
+ "error: can't read group descriptor %d", i);
db_count = i;
goto failed_mount2;
}
}
if (!ext3_check_descriptors (sb)) {
- printk(KERN_ERR "EXT3-fs: group descriptors corrupted!\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: group descriptors corrupted");
goto failed_mount2;
}
sbi->s_gdb_count = db_count;
@@ -1862,7 +1880,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
ext3_count_dirs(sb));
}
if (err) {
- printk(KERN_ERR "EXT3-fs: insufficient memory\n");
+ ext3_msg(sb, KERN_ERR, "error: insufficient memory");
goto failed_mount3;
}

@@ -1910,9 +1928,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
goto failed_mount3;
} else {
if (!silent)
- printk (KERN_ERR
- "ext3: No journal on filesystem on %s\n",
- sb->s_id);
+ ext3_msg(sb, KERN_ERR,
+ "error: no journal found. "
+ "mounting ext3 over ext2?");
goto failed_mount3;
}

@@ -1934,8 +1952,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
case EXT3_MOUNT_WRITEBACK_DATA:
if (!journal_check_available_features
(sbi->s_journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)) {
- printk(KERN_ERR "EXT3-fs: Journal does not support "
- "requested data journaling mode\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: journal does not support "
+ "requested data journaling mode");
goto failed_mount4;
}
default:
@@ -1944,8 +1963,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)

if (test_opt(sb, NOBH)) {
if (!(test_opt(sb, DATA_FLAGS) == EXT3_MOUNT_WRITEBACK_DATA)) {
- printk(KERN_WARNING "EXT3-fs: Ignoring nobh option - "
- "its supported only with writeback mode\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: ignoring nobh option - "
+ "its supported only with writeback mode");
clear_opt(sbi->s_mount_opt, NOBH);
}
}
@@ -1956,18 +1976,18 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)

root = ext3_iget(sb, EXT3_ROOT_INO);
if (IS_ERR(root)) {
- printk(KERN_ERR "EXT3-fs: get root inode failed\n");
+ ext3_msg(sb, KERN_ERR, "error: get root inode failed");
ret = PTR_ERR(root);
goto failed_mount4;
}
if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
iput(root);
- printk(KERN_ERR "EXT3-fs: corrupt root inode, run e2fsck\n");
+ ext3_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
goto failed_mount4;
}
sb->s_root = d_alloc_root(root);
if (!sb->s_root) {
- printk(KERN_ERR "EXT3-fs: get root dentry failed\n");
+ ext3_msg(sb, KERN_ERR, "error: get root dentry failed");
iput(root);
ret = -ENOMEM;
goto failed_mount4;
@@ -1986,9 +2006,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
ext3_orphan_cleanup(sb, es);
EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
if (needs_recovery)
- printk (KERN_INFO "EXT3-fs: recovery complete.\n");
+ ext3_msg(sb, KERN_INFO, "recovery complete");
ext3_mark_recovery_complete(sb, es);
- printk (KERN_INFO "EXT3-fs: mounted filesystem with %s data mode.\n",
+ ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
"writeback");
@@ -1998,7 +2018,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)

cantfind_ext3:
if (!silent)
- printk(KERN_ERR "VFS: Can't find ext3 filesystem on dev %s.\n",
+ ext3_msg(sb, KERN_INFO,
+ "error: can't find ext3 filesystem on dev %s.",
sb->s_id);
goto failed_mount;

@@ -2066,27 +2087,27 @@ static journal_t *ext3_get_journal(struct super_block *sb,

journal_inode = ext3_iget(sb, journal_inum);
if (IS_ERR(journal_inode)) {
- printk(KERN_ERR "EXT3-fs: no journal found.\n");
+ ext3_msg(sb, KERN_ERR, "error: no journal found");
return NULL;
}
if (!journal_inode->i_nlink) {
make_bad_inode(journal_inode);
iput(journal_inode);
- printk(KERN_ERR "EXT3-fs: journal inode is deleted.\n");
+ ext3_msg(sb, KERN_ERR, "error: journal inode is deleted");
return NULL;
}

jbd_debug(2, "Journal inode found at %p: %Ld bytes\n",
journal_inode, journal_inode->i_size);
if (!S_ISREG(journal_inode->i_mode)) {
- printk(KERN_ERR "EXT3-fs: invalid journal inode.\n");
+ ext3_msg(sb, KERN_ERR, "error: invalid journal inode");
iput(journal_inode);
return NULL;
}

journal = journal_init_inode(journal_inode);
if (!journal) {
- printk(KERN_ERR "EXT3-fs: Could not load journal inode\n");
+ ext3_msg(sb, KERN_ERR, "error: could not load journal inode");
iput(journal_inode);
return NULL;
}
@@ -2113,8 +2134,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
return NULL;

if (bd_claim(bdev, sb)) {
- printk(KERN_ERR
- "EXT3: failed to claim external journal device.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: failed to claim external journal device");
blkdev_put(bdev, FMODE_READ|FMODE_WRITE);
return NULL;
}
@@ -2122,8 +2143,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
blocksize = sb->s_blocksize;
hblock = bdev_logical_block_size(bdev);
if (blocksize < hblock) {
- printk(KERN_ERR
- "EXT3-fs: blocksize too small for journal device.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: blocksize too small for journal device");
goto out_bdev;
}

@@ -2131,8 +2152,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
offset = EXT3_MIN_BLOCK_SIZE % blocksize;
set_blocksize(bdev, blocksize);
if (!(bh = __bread(bdev, sb_block, blocksize))) {
- printk(KERN_ERR "EXT3-fs: couldn't read superblock of "
- "external journal\n");
+ ext3_msg(sb, KERN_ERR, "error: couldn't read superblock of "
+ "external journal");
goto out_bdev;
}

@@ -2140,14 +2161,14 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
if ((le16_to_cpu(es->s_magic) != EXT3_SUPER_MAGIC) ||
!(le32_to_cpu(es->s_feature_incompat) &
EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)) {
- printk(KERN_ERR "EXT3-fs: external journal has "
- "bad superblock\n");
+ ext3_msg(sb, KERN_ERR, "error: external journal has "
+ "bad superblock");
brelse(bh);
goto out_bdev;
}

if (memcmp(EXT3_SB(sb)->s_es->s_journal_uuid, es->s_uuid, 16)) {
- printk(KERN_ERR "EXT3-fs: journal UUID does not match\n");
+ ext3_msg(sb, KERN_ERR, "error: journal UUID does not match");
brelse(bh);
goto out_bdev;
}
@@ -2159,19 +2180,21 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
journal = journal_init_dev(bdev, sb->s_bdev,
start, len, blocksize);
if (!journal) {
- printk(KERN_ERR "EXT3-fs: failed to create device journal\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: failed to create device journal");
goto out_bdev;
}
journal->j_private = sb;
ll_rw_block(READ, 1, &journal->j_sb_buffer);
wait_on_buffer(journal->j_sb_buffer);
if (!buffer_uptodate(journal->j_sb_buffer)) {
- printk(KERN_ERR "EXT3-fs: I/O error on journal device\n");
+ ext3_msg(sb, KERN_ERR, "I/O error on journal device");
goto out_journal;
}
if (be32_to_cpu(journal->j_superblock->s_nr_users) != 1) {
- printk(KERN_ERR "EXT3-fs: External journal has more than one "
- "user (unsupported) - %d\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: external journal has more than one "
+ "user (unsupported) - %d",
be32_to_cpu(journal->j_superblock->s_nr_users));
goto out_journal;
}
@@ -2197,8 +2220,8 @@ static int ext3_load_journal(struct super_block *sb,

if (journal_devnum &&
journal_devnum != le32_to_cpu(es->s_journal_dev)) {
- printk(KERN_INFO "EXT3-fs: external journal device major/minor "
- "numbers have changed\n");
+ ext3_msg(sb, KERN_INFO, "external journal device major/minor "
+ "numbers have changed");
journal_dev = new_decode_dev(journal_devnum);
} else
journal_dev = new_decode_dev(le32_to_cpu(es->s_journal_dev));
@@ -2213,21 +2236,21 @@ static int ext3_load_journal(struct super_block *sb,

if (EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_RECOVER)) {
if (sb->s_flags & MS_RDONLY) {
- printk(KERN_INFO "EXT3-fs: INFO: recovery "
- "required on readonly filesystem.\n");
+ ext3_msg(sb, KERN_INFO,
+ "recovery required on readonly filesystem");
if (really_read_only) {
- printk(KERN_ERR "EXT3-fs: write access "
- "unavailable, cannot proceed.\n");
+ ext3_msg(sb, KERN_ERR, "error: write access "
+ "unavailable, cannot proceed");
return -EROFS;
}
- printk (KERN_INFO "EXT3-fs: write access will "
- "be enabled during recovery.\n");
+ ext3_msg(sb, KERN_INFO,
+ "write access will be enabled during recovery");
}
}

if (journal_inum && journal_dev) {
- printk(KERN_ERR "EXT3-fs: filesystem has both journal "
- "and inode journals!\n");
+ ext3_msg(sb, KERN_ERR, "error: filesystem has both journal "
+ "and inode journals");
return -EINVAL;
}

@@ -2242,7 +2265,7 @@ static int ext3_load_journal(struct super_block *sb,
if (!really_read_only && test_opt(sb, UPDATE_JOURNAL)) {
err = journal_update_format(journal);
if (err) {
- printk(KERN_ERR "EXT3-fs: error updating journal.\n");
+ ext3_msg(sb, KERN_ERR, "error updating journal");
journal_destroy(journal);
return err;
}
@@ -2254,7 +2277,7 @@ static int ext3_load_journal(struct super_block *sb,
err = journal_load(journal);

if (err) {
- printk(KERN_ERR "EXT3-fs: error loading journal.\n");
+ ext3_msg(sb, KERN_ERR, "error loading journal");
journal_destroy(journal);
return err;
}
@@ -2273,16 +2296,17 @@ static int ext3_load_journal(struct super_block *sb,
return 0;
}

-static int ext3_create_journal(struct super_block * sb,
- struct ext3_super_block * es,
+static int ext3_create_journal(struct super_block *sb,
+ struct ext3_super_block *es,
unsigned int journal_inum)
{
journal_t *journal;
int err;

if (sb->s_flags & MS_RDONLY) {
- printk(KERN_ERR "EXT3-fs: readonly filesystem when trying to "
- "create journal.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: readonly filesystem when trying to "
+ "create journal");
return -EROFS;
}

@@ -2290,12 +2314,12 @@ static int ext3_create_journal(struct super_block * sb,
if (!journal)
return -EINVAL;

- printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n",
+ ext3_msg(sb, KERN_INFO, "creating new journal on inode %u",
journal_inum);

err = journal_create(journal);
if (err) {
- printk(KERN_ERR "EXT3-fs: error creating journal.\n");
+ ext3_msg(sb, KERN_ERR, "error creating journal");
journal_destroy(journal);
return -EIO;
}
@@ -2376,8 +2400,8 @@ out:
* has recorded an error from a previous lifetime, move that error to the
* main filesystem now.
*/
-static void ext3_clear_journal_err(struct super_block * sb,
- struct ext3_super_block * es)
+static void ext3_clear_journal_err(struct super_block *sb,
+ struct ext3_super_block *es)
{
journal_t *journal;
int j_errno;
@@ -2568,10 +2592,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
__le32 ret;
if ((ret = EXT3_HAS_RO_COMPAT_FEATURE(sb,
~EXT3_FEATURE_RO_COMPAT_SUPP))) {
- printk(KERN_WARNING "EXT3-fs: %s: couldn't "
- "remount RDWR because of unsupported "
- "optional features (%x).\n",
- sb->s_id, le32_to_cpu(ret));
+ ext3_msg(sb, KERN_WARNING,
+ "warning: couldn't remount RDWR "
+ "because of unsupported optional "
+ "features (%x)", le32_to_cpu(ret));
err = -EROFS;
goto restore_opts;
}
@@ -2582,11 +2606,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
* require a full umount/remount for now.
*/
if (es->s_last_orphan) {
- printk(KERN_WARNING "EXT3-fs: %s: couldn't "
+ ext3_msg(sb, KERN_WARNING, "warning: couldn't "
"remount RDWR because of unprocessed "
"orphan inode list. Please "
- "umount/remount instead.\n",
- sb->s_id);
+ "umount/remount instead.");
err = -EINVAL;
goto restore_opts;
}
@@ -2837,9 +2860,9 @@ static int ext3_quota_on(struct super_block *sb, int type, int format_id,
if (EXT3_SB(sb)->s_qf_names[type]) {
/* Quotafile not of fs root? */
if (path.dentry->d_parent != sb->s_root)
- printk(KERN_WARNING
- "EXT3-fs: Quota file not on filesystem root. "
- "Journaled quota will not work.\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: Quota file not on filesystem root. "
+ "Journaled quota will not work.");
}

/*
@@ -2921,8 +2944,9 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
handle_t *handle = journal_current_handle();

if (!handle) {
- printk(KERN_WARNING "EXT3-fs: Quota write (off=%Lu, len=%Lu)"
- " cancelled because transaction is not started.\n",
+ ext3_msg(sb, KERN_WARNING,
+ "warning: quota write (off=%llu, len=%llu)"
+ " cancelled because transaction is not started.",
(unsigned long long)off, (unsigned long long)len);
return -EIO;
}
--
1.6.3.3



2009-11-21 23:55:36

by Eric Sandeen

[permalink] [raw]
Subject: Re: [PATCH v1] Unify log messages in ext3

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

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

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

Not sure what happened to it ...

-Eric

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


2009-11-22 19:12:58

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v1] Unify log messages in ext3

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

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


2009-11-22 19:39:30

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v2] Unify log messages in ext3

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

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

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

Signed-off-by: Alexey Fisher <[email protected]>

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

diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 427496c..b1b6da8 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -135,12 +135,24 @@ void ext3_journal_abort_handle(const char *caller, const char *err_fn,
if (is_handle_aborted(handle))
return;

- printk(KERN_ERR "%s: aborting transaction: %s in %s\n",
- caller, errstr, err_fn);
+ printk(KERN_ERR "EXT3-fs: %s: aborting transaction: %s in %s\n",
+ caller, errstr, err_fn);

journal_abort_handle(handle);
}

+void ext3_msg(struct super_block *sb, const char *prefix,
+ const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ printk("%sEXT3-fs (%s): ", prefix, sb->s_id);
+ vprintk(fmt, args);
+ printk("\n");
+ va_end(args);
+}
+
/* Deal with the reporting of failure conditions on a filesystem such as
* inconsistencies detected or read IO failures.
*
@@ -174,12 +186,13 @@ static void ext3_handle_error(struct super_block *sb)
journal_abort(journal, -EIO);
}
if (test_opt (sb, ERRORS_RO)) {
- printk (KERN_CRIT "Remounting filesystem read-only\n");
+ ext3_msg(sb, KERN_CRIT,
+ "error: remounting filesystem read-only");
sb->s_flags |= MS_RDONLY;
}
ext3_commit_super(sb, es, 1);
if (test_opt(sb, ERRORS_PANIC))
- panic("EXT3-fs (device %s): panic forced after error\n",
+ panic("EXT3-fs (%s): panic forced after error\n",
sb->s_id);
}

@@ -247,8 +260,7 @@ void __ext3_std_error (struct super_block * sb, const char * function,
return;

errstr = ext3_decode_error(sb, errno, nbuf);
- printk (KERN_CRIT "EXT3-fs error (device %s) in %s: %s\n",
- sb->s_id, function, errstr);
+ ext3_msg(sb, KERN_CRIT, "error in %s: %s", function, errstr);

ext3_handle_error(sb);
}
@@ -268,21 +280,20 @@ void ext3_abort (struct super_block * sb, const char * function,
{
va_list args;

- printk (KERN_CRIT "ext3_abort called.\n");
-
va_start(args, fmt);
- printk(KERN_CRIT "EXT3-fs error (device %s): %s: ",sb->s_id, function);
+ printk(KERN_CRIT "EXT3-fs (%s): error: %s: ", sb->s_id, function);
vprintk(fmt, args);
printk("\n");
va_end(args);

if (test_opt(sb, ERRORS_PANIC))
- panic("EXT3-fs panic from previous error\n");
+ panic("EXT3-fs: panic from previous error\n");

if (sb->s_flags & MS_RDONLY)
return;

- printk(KERN_CRIT "Remounting filesystem read-only\n");
+ ext3_msg(sb, KERN_CRIT,
+ "error: remounting filesystem read-only");
EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS;
sb->s_flags |= MS_RDONLY;
EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT;
@@ -296,7 +307,7 @@ void ext3_warning (struct super_block * sb, const char * function,
va_list args;

va_start(args, fmt);
- printk(KERN_WARNING "EXT3-fs warning (device %s): %s: ",
+ printk(KERN_WARNING "EXT3-fs (%s): warning: %s: ",
sb->s_id, function);
vprintk(fmt, args);
printk("\n");
@@ -310,10 +321,10 @@ void ext3_update_dynamic_rev(struct super_block *sb)
if (le32_to_cpu(es->s_rev_level) > EXT3_GOOD_OLD_REV)
return;

- ext3_warning(sb, __func__,
- "updating to rev %d because of new feature flag, "
- "running e2fsck is recommended",
- EXT3_DYNAMIC_REV);
+ ext3_msg(sb, KERN_WARNING,
+ "warning: updating to rev %d because of "
+ "new feature flag, running e2fsck is recommended",
+ EXT3_DYNAMIC_REV);

es->s_first_ino = cpu_to_le32(EXT3_GOOD_OLD_FIRST_INO);
es->s_inode_size = cpu_to_le16(EXT3_GOOD_OLD_INODE_SIZE);
@@ -331,7 +342,7 @@ void ext3_update_dynamic_rev(struct super_block *sb)
/*
* Open the external journal device
*/
-static struct block_device *ext3_blkdev_get(dev_t dev)
+static struct block_device *ext3_blkdev_get(dev_t dev, struct super_block *sb)
{
struct block_device *bdev;
char b[BDEVNAME_SIZE];
@@ -342,8 +353,9 @@ static struct block_device *ext3_blkdev_get(dev_t dev)
return bdev;

fail:
- printk(KERN_ERR "EXT3: failed to open journal device %s: %ld\n",
- __bdevname(dev, b), PTR_ERR(bdev));
+ ext3_msg(sb, "error: failed to open journal device %s: %ld",
+ __bdevname(dev, b), PTR_ERR(bdev));
+
return NULL;
}

@@ -378,13 +390,13 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi)
{
struct list_head *l;

- printk(KERN_ERR "sb orphan head is %d\n",
+ ext3_msg(sb, KERN_ERR, "error: sb orphan head is %d",
le32_to_cpu(sbi->s_es->s_last_orphan));

- printk(KERN_ERR "sb_info orphan list:\n");
+ ext3_msg(sb, KERN_ERR, "sb_info orphan list:");
list_for_each(l, &sbi->s_orphan) {
struct inode *inode = orphan_list_entry(l);
- printk(KERN_ERR " "
+ ext3_msg(sb, KERN_ERR, " "
"inode %s:%lu at %p: mode %o, nlink %d, next %d\n",
inode->i_sb->s_id, inode->i_ino, inode,
inode->i_mode, inode->i_nlink,
@@ -845,7 +857,7 @@ static const match_table_t tokens = {
{Opt_err, NULL},
};

-static ext3_fsblk_t get_sb_block(void **data)
+static ext3_fsblk_t get_sb_block(void **data, struct super_block *sb)
{
ext3_fsblk_t sb_block;
char *options = (char *) *data;
@@ -856,7 +868,7 @@ static ext3_fsblk_t get_sb_block(void **data)
/*todo: use simple_strtoll with >32bit ext3 */
sb_block = simple_strtoul(options, &options, 0);
if (*options && *options != ',') {
- printk("EXT3-fs: Invalid sb specification: %s\n",
+ ext3_msg(sb, "error: invalid sb specification: %s",
(char *) *data);
return 1;
}
@@ -956,7 +968,8 @@ static int parse_options (char *options, struct super_block *sb,
#else
case Opt_user_xattr:
case Opt_nouser_xattr:
- printk("EXT3 (no)user_xattr options not supported\n");
+ ext3_msg(sb, KERN_INFO,
+ "(no)user_xattr options not supported");
break;
#endif
#ifdef CONFIG_EXT3_FS_POSIX_ACL
@@ -969,7 +982,8 @@ static int parse_options (char *options, struct super_block *sb,
#else
case Opt_acl:
case Opt_noacl:
- printk("EXT3 (no)acl options not supported\n");
+ ext3_msg(sb, KERN_INFO,
+ "(no)acl options not supported");
break;
#endif
case Opt_reservation:
@@ -985,16 +999,16 @@ static int parse_options (char *options, struct super_block *sb,
user to specify an existing inode to be the
journal file. */
if (is_remount) {
- printk(KERN_ERR "EXT3-fs: cannot specify "
- "journal on remount\n");
+ ext3_msg(sb, KERN_ERR, "error: cannot specify "
+ "journal on remount");
return 0;
}
set_opt (sbi->s_mount_opt, UPDATE_JOURNAL);
break;
case Opt_journal_inum:
if (is_remount) {
- printk(KERN_ERR "EXT3-fs: cannot specify "
- "journal on remount\n");
+ ext3_msg(sb, KERN_ERR, "error: cannot specify "
+ "journal on remount");
return 0;
}
if (match_int(&args[0], &option))
@@ -1003,8 +1017,8 @@ static int parse_options (char *options, struct super_block *sb,
break;
case Opt_journal_dev:
if (is_remount) {
- printk(KERN_ERR "EXT3-fs: cannot specify "
- "journal on remount\n");
+ ext3_msg(sb, KERN_ERR, "error: cannot specify "
+ "journal on remount");
return 0;
}
if (match_int(&args[0], &option))
@@ -1036,12 +1050,11 @@ static int parse_options (char *options, struct super_block *sb,
if ((sbi->s_mount_opt & EXT3_MOUNT_DATA_FLAGS)
== data_opt)
break;
- printk(KERN_ERR
- "EXT3-fs (device %s): Cannot change "
+ ext3_msg(sb, KERN_ERR,
+ "error: cannot change "
"data mode on remount. The filesystem "
"is mounted in data=%s mode and you "
- "try to remount it in data=%s mode.\n",
- sb->s_id,
+ "try to remount it in data=%s mode.",
data_mode_string(sbi->s_mount_opt &
EXT3_MOUNT_DATA_FLAGS),
data_mode_string(data_opt));
@@ -1066,31 +1079,31 @@ static int parse_options (char *options, struct super_block *sb,
set_qf_name:
if (sb_any_quota_loaded(sb) &&
!sbi->s_qf_names[qtype]) {
- printk(KERN_ERR
- "EXT3-fs: Cannot change journaled "
- "quota options when quota turned on.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: cannot change journaled "
+ "quota options when quota turned on.");
return 0;
}
qname = match_strdup(&args[0]);
if (!qname) {
- printk(KERN_ERR
- "EXT3-fs: not enough memory for "
- "storing quotafile name.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: not enough memory for "
+ "storing quotafile name.");
return 0;
}
if (sbi->s_qf_names[qtype] &&
strcmp(sbi->s_qf_names[qtype], qname)) {
- printk(KERN_ERR
- "EXT3-fs: %s quota file already "
- "specified.\n", QTYPE2NAME(qtype));
+ ext3_msg(sb, KERN_ERR,
+ "error: %s quota file already "
+ "specified.", QTYPE2NAME(qtype));
kfree(qname);
return 0;
}
sbi->s_qf_names[qtype] = qname;
if (strchr(sbi->s_qf_names[qtype], '/')) {
- printk(KERN_ERR
- "EXT3-fs: quotafile must be on "
- "filesystem root.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: quotafile must be on "
+ "filesystem root.");
kfree(sbi->s_qf_names[qtype]);
sbi->s_qf_names[qtype] = NULL;
return 0;
@@ -1105,9 +1118,9 @@ set_qf_name:
clear_qf_name:
if (sb_any_quota_loaded(sb) &&
sbi->s_qf_names[qtype]) {
- printk(KERN_ERR "EXT3-fs: Cannot change "
+ ext3_msg(sb, KERN_ERR, "error: cannot change "
"journaled quota options when "
- "quota turned on.\n");
+ "quota turned on.");
return 0;
}
/*
@@ -1124,9 +1137,9 @@ clear_qf_name:
set_qf_format:
if (sb_any_quota_loaded(sb) &&
sbi->s_jquota_fmt != qfmt) {
- printk(KERN_ERR "EXT3-fs: Cannot change "
+ ext3_msg(sb, KERN_ERR, "error: cannot change "
"journaled quota options when "
- "quota turned on.\n");
+ "quota turned on.");
return 0;
}
sbi->s_jquota_fmt = qfmt;
@@ -1142,8 +1155,8 @@ set_qf_format:
break;
case Opt_noquota:
if (sb_any_quota_loaded(sb)) {
- printk(KERN_ERR "EXT3-fs: Cannot change quota "
- "options when quota turned on.\n");
+ ext3_msg(sb, KERN_ERR, "error: cannot change "
+ "quota options when quota turned on.");
return 0;
}
clear_opt(sbi->s_mount_opt, QUOTA);
@@ -1154,8 +1167,8 @@ set_qf_format:
case Opt_quota:
case Opt_usrquota:
case Opt_grpquota:
- printk(KERN_ERR
- "EXT3-fs: quota options not supported.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: quota options not supported.");
break;
case Opt_usrjquota:
case Opt_grpjquota:
@@ -1163,9 +1176,9 @@ set_qf_format:
case Opt_offgrpjquota:
case Opt_jqfmt_vfsold:
case Opt_jqfmt_vfsv0:
- printk(KERN_ERR
- "EXT3-fs: journaled quota options not "
- "supported.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: journaled quota options not "
+ "supported.");
break;
case Opt_noquota:
break;
@@ -1185,8 +1198,9 @@ set_qf_format:
break;
case Opt_resize:
if (!is_remount) {
- printk("EXT3-fs: resize option only available "
- "for remount\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: resize option only available "
+ "for remount");
return 0;
}
if (match_int(&args[0], &option) != 0)
@@ -1200,9 +1214,9 @@ set_qf_format:
clear_opt(sbi->s_mount_opt, NOBH);
break;
default:
- printk (KERN_ERR
- "EXT3-fs: Unrecognized mount option \"%s\" "
- "or missing value\n", p);
+ ext3_msg(sb, KERN_ERR,
+ "error: unrecognized mount option \"%s\" "
+ "or missing valuen", p);
return 0;
}
}
@@ -1220,21 +1234,21 @@ set_qf_format:
(sbi->s_mount_opt & EXT3_MOUNT_GRPQUOTA)) ||
(sbi->s_qf_names[GRPQUOTA] &&
(sbi->s_mount_opt & EXT3_MOUNT_USRQUOTA))) {
- printk(KERN_ERR "EXT3-fs: old and new quota "
- "format mixing.\n");
+ ext3_msg(sb, KERN_ERR, "error: old and new quota "
+ "format mixing.");
return 0;
}

if (!sbi->s_jquota_fmt) {
- printk(KERN_ERR "EXT3-fs: journaled quota format "
- "not specified.\n");
+ ext3_msg(sb, KERN_ERR, "error: journaled quota format "
+ "not specified.");
return 0;
}
} else {
if (sbi->s_jquota_fmt) {
- printk(KERN_ERR "EXT3-fs: journaled quota format "
+ ext3_msg(sb, KERN_ERR, "error: journaled quota format "
"specified with no journaling "
- "enabled.\n");
+ "enabled.");
return 0;
}
}
@@ -1249,31 +1263,33 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,
int res = 0;

if (le32_to_cpu(es->s_rev_level) > EXT3_MAX_SUPP_REV) {
- printk (KERN_ERR "EXT3-fs warning: revision level too high, "
- "forcing read-only mode\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: revision level too high, "
+ "forcing read-only mode");
res = MS_RDONLY;
}
if (read_only)
return res;
if (!(sbi->s_mount_state & EXT3_VALID_FS))
- printk (KERN_WARNING "EXT3-fs warning: mounting unchecked fs, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: mounting unchecked fs, "
+ "running e2fsck is recommended");
else if ((sbi->s_mount_state & EXT3_ERROR_FS))
- printk (KERN_WARNING
- "EXT3-fs warning: mounting fs with errors, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: mounting fs with errors, "
+ "running e2fsck is recommended");
else if ((__s16) le16_to_cpu(es->s_max_mnt_count) >= 0 &&
le16_to_cpu(es->s_mnt_count) >=
(unsigned short) (__s16) le16_to_cpu(es->s_max_mnt_count))
- printk (KERN_WARNING
- "EXT3-fs warning: maximal mount count reached, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: maximal mount count reached, "
+ "running e2fsck is recommended");
else if (le32_to_cpu(es->s_checkinterval) &&
(le32_to_cpu(es->s_lastcheck) +
le32_to_cpu(es->s_checkinterval) <= get_seconds()))
- printk (KERN_WARNING
- "EXT3-fs warning: checktime reached, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: checktime reached, "
+ "running e2fsck is recommended");
#if 0
/* @@@ We _will_ want to clear the valid bit if we find
inconsistencies, to force a fsck at reboot. But for
@@ -1290,22 +1306,20 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es,

ext3_commit_super(sb, es, 1);
if (test_opt(sb, DEBUG))
- printk(KERN_INFO "[EXT3 FS bs=%lu, gc=%lu, "
- "bpg=%lu, ipg=%lu, mo=%04lx]\n",
+ ext3_msg(sb, KERN_INFO, "[bs=%lu, gc=%lu, "
+ "bpg=%lu, ipg=%lu, mo=%04lx]",
sb->s_blocksize,
sbi->s_groups_count,
EXT3_BLOCKS_PER_GROUP(sb),
EXT3_INODES_PER_GROUP(sb),
sbi->s_mount_opt);

- printk(KERN_INFO "EXT3 FS on %s, ", sb->s_id);
if (EXT3_SB(sb)->s_journal->j_inode == NULL) {
char b[BDEVNAME_SIZE];
-
- printk("external journal on %s\n",
+ ext3_msg(sb, KERN_INFO, "using externa journal on %s",
bdevname(EXT3_SB(sb)->s_journal->j_dev, b));
} else {
- printk("internal journal\n");
+ ext3_msg(sb, KERN_INFO, "using internal journaln");
}
return res;
}
@@ -1399,8 +1413,8 @@ static void ext3_orphan_cleanup (struct super_block * sb,
}

if (bdev_read_only(sb->s_bdev)) {
- printk(KERN_ERR "EXT3-fs: write access "
- "unavailable, skipping orphan cleanup.\n");
+ ext3_msg(sb, KERN_ERR, "error: write access "
+ "unavailable, skipping orphan cleanup.");
return;
}

@@ -1414,8 +1428,7 @@ static void ext3_orphan_cleanup (struct super_block * sb,
}

if (s_flags & MS_RDONLY) {
- printk(KERN_INFO "EXT3-fs: %s: orphan cleanup on readonly fs\n",
- sb->s_id);
+ ext3_msg(sb, KERN_INFO, "orphan cleanup on readonly fs");
sb->s_flags &= ~MS_RDONLY;
}
#ifdef CONFIG_QUOTA
@@ -1426,9 +1439,9 @@ static void ext3_orphan_cleanup (struct super_block * sb,
if (EXT3_SB(sb)->s_qf_names[i]) {
int ret = ext3_quota_on_mount(sb, i);
if (ret < 0)
- printk(KERN_ERR
- "EXT3-fs: Cannot turn on journaled "
- "quota: error %d\n", ret);
+ ext3_msg(sb, KERN_ERR,
+ "error: cannot turn on journaled "
+ "quota: %d", ret);
}
}
#endif
@@ -1466,11 +1479,11 @@ static void ext3_orphan_cleanup (struct super_block * sb,
#define PLURAL(x) (x), ((x)==1) ? "" : "s"

if (nr_orphans)
- printk(KERN_INFO "EXT3-fs: %s: %d orphan inode%s deleted\n",
- sb->s_id, PLURAL(nr_orphans));
+ ext3_msg(sb, KERN_INFO, "%d orphan inode%s deleted",
+ PLURAL(nr_orphans));
if (nr_truncates)
- printk(KERN_INFO "EXT3-fs: %s: %d truncate%s cleaned up\n",
- sb->s_id, PLURAL(nr_truncates));
+ ext3_msg(sb, KERN_INFO, "%d truncate%s cleaned up",
+ PLURAL(nr_truncates));
#ifdef CONFIG_QUOTA
/* Turn quotas off */
for (i = 0; i < MAXQUOTAS; i++) {
@@ -1554,7 +1567,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
struct ext3_super_block *es = NULL;
struct ext3_sb_info *sbi;
ext3_fsblk_t block;
- ext3_fsblk_t sb_block = get_sb_block(&data);
+ ext3_fsblk_t sb_block = get_sb_block(&data, sb);
ext3_fsblk_t logic_sb_block;
unsigned long offset = 0;
unsigned int journal_inum = 0;
@@ -1590,7 +1603,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)

blocksize = sb_min_blocksize(sb, EXT3_MIN_BLOCK_SIZE);
if (!blocksize) {
- printk(KERN_ERR "EXT3-fs: unable to set blocksize\n");
+ ext3_msg(sb, KERN_ERR, "error: unable to set blocksize");
goto out_fail;
}

@@ -1606,7 +1619,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
}

if (!(bh = sb_bread(sb, logic_sb_block))) {
- printk (KERN_ERR "EXT3-fs: unable to read superblock\n");
+ ext3_msg(sb, KERN_ERR, "error: unable to read superblock");
goto out_fail;
}
/*
@@ -1665,9 +1678,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
(EXT3_HAS_COMPAT_FEATURE(sb, ~0U) ||
EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) ||
EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U)))
- printk(KERN_WARNING
- "EXT3-fs warning: feature flags set on rev 0 fs, "
- "running e2fsck is recommended\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: feature flags set on rev 0 fs, "
+ "running e2fsck is recommended");
/*
* Check feature flags regardless of the revision level, since we
* previously didn't change the revision level when setting the flags,
@@ -1675,25 +1688,25 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
*/
features = EXT3_HAS_INCOMPAT_FEATURE(sb, ~EXT3_FEATURE_INCOMPAT_SUPP);
if (features) {
- printk(KERN_ERR "EXT3-fs: %s: couldn't mount because of "
- "unsupported optional features (%x).\n",
- sb->s_id, le32_to_cpu(features));
+ ext3_msg(sb, KERN_ERR,
+ "error: couldn't mount because of unsupported "
+ "optional features (%x)", le32_to_cpu(features));
goto failed_mount;
}
features = EXT3_HAS_RO_COMPAT_FEATURE(sb, ~EXT3_FEATURE_RO_COMPAT_SUPP);
if (!(sb->s_flags & MS_RDONLY) && features) {
- printk(KERN_ERR "EXT3-fs: %s: couldn't mount RDWR because of "
- "unsupported optional features (%x).\n",
- sb->s_id, le32_to_cpu(features));
+ ext3_msg(sb, KERN_ERR,
+ "error: couldn't mount RDWR because of unsupported "
+ "optional features (%x)", le32_to_cpu(features));
goto failed_mount;
}
blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size);

if (blocksize < EXT3_MIN_BLOCK_SIZE ||
blocksize > EXT3_MAX_BLOCK_SIZE) {
- printk(KERN_ERR
- "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n",
- blocksize, sb->s_id);
+ ext3_msg(sb, KERN_ERR,
+ "error: couldn't mount because of unsupported "
+ "filesystem blocksize %d", blocksize);
goto failed_mount;
}

@@ -1704,30 +1717,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
* than the hardware sectorsize for the machine.
*/
if (blocksize < hblock) {
- printk(KERN_ERR "EXT3-fs: blocksize %d too small for "
- "device blocksize %d.\n", blocksize, hblock);
+ ext3_msg(sb, KERN_ERR,
+ "error: fsblocksize %d too small for "
+ "hardware sectorsize %d", blocksize, hblock);
goto failed_mount;
}

brelse (bh);
if (!sb_set_blocksize(sb, blocksize)) {
- printk(KERN_ERR "EXT3-fs: bad blocksize %d.\n",
- blocksize);
+ ext3_msg(sb, KERN_ERR,
+ "error: bad blocksize %d", blocksize);
goto out_fail;
}
logic_sb_block = (sb_block * EXT3_MIN_BLOCK_SIZE) / blocksize;
offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize;
bh = sb_bread(sb, logic_sb_block);
if (!bh) {
- printk(KERN_ERR
- "EXT3-fs: Can't read superblock on 2nd try.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: can't read superblock on 2nd try");
goto failed_mount;
}
es = (struct ext3_super_block *)(((char *)bh->b_data) + offset);
sbi->s_es = es;
if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) {
- printk (KERN_ERR
- "EXT3-fs: Magic mismatch, very weird !\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: magic mismatch");
goto failed_mount;
}
}
@@ -1743,8 +1757,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
if ((sbi->s_inode_size < EXT3_GOOD_OLD_INODE_SIZE) ||
(!is_power_of_2(sbi->s_inode_size)) ||
(sbi->s_inode_size > blocksize)) {
- printk (KERN_ERR
- "EXT3-fs: unsupported inode size: %d\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: unsupported inode size: %d",
sbi->s_inode_size);
goto failed_mount;
}
@@ -1752,8 +1766,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
sbi->s_frag_size = EXT3_MIN_FRAG_SIZE <<
le32_to_cpu(es->s_log_frag_size);
if (blocksize != sbi->s_frag_size) {
- printk(KERN_ERR
- "EXT3-fs: fragsize %lu != blocksize %u (unsupported)\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: fragsize %lu != blocksize %u (unsupported)",
sbi->s_frag_size, blocksize);
goto failed_mount;
}
@@ -1789,31 +1803,31 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
}

if (sbi->s_blocks_per_group > blocksize * 8) {
- printk (KERN_ERR
- "EXT3-fs: #blocks per group too big: %lu\n",
+ ext3_msg(sb, KERN_ERR,
+ "#blocks per group too big: %lu",
sbi->s_blocks_per_group);
goto failed_mount;
}
if (sbi->s_frags_per_group > blocksize * 8) {
- printk (KERN_ERR
- "EXT3-fs: #fragments per group too big: %lu\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: #fragments per group too big: %lu",
sbi->s_frags_per_group);
goto failed_mount;
}
if (sbi->s_inodes_per_group > blocksize * 8) {
- printk (KERN_ERR
- "EXT3-fs: #inodes per group too big: %lu\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: #inodes per group too big: %lu",
sbi->s_inodes_per_group);
goto failed_mount;
}

if (le32_to_cpu(es->s_blocks_count) >
(sector_t)(~0ULL) >> (sb->s_blocksize_bits - 9)) {
- printk(KERN_ERR "EXT3-fs: filesystem on %s:"
- " too large to mount safely\n", sb->s_id);
+ ext3_msg(sb, KERN_ERR,
+ "error: filesystem is too large to mount safely");
if (sizeof(sector_t) < 8)
- printk(KERN_WARNING "EXT3-fs: CONFIG_LBDAF not "
- "enabled\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: CONFIG_LBDAF not enabled");
goto failed_mount;
}

@@ -1827,7 +1841,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *),
GFP_KERNEL);
if (sbi->s_group_desc == NULL) {
- printk (KERN_ERR "EXT3-fs: not enough memory\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: not enough memory");
goto failed_mount;
}

@@ -1837,14 +1852,15 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
block = descriptor_loc(sb, logic_sb_block, i);
sbi->s_group_desc[i] = sb_bread(sb, block);
if (!sbi->s_group_desc[i]) {
- printk (KERN_ERR "EXT3-fs: "
- "can't read group descriptor %d\n", i);
+ ext3_msg(sb, KERN_ERR,
+ "error: can't read group descriptor %d", i);
db_count = i;
goto failed_mount2;
}
}
if (!ext3_check_descriptors (sb)) {
- printk(KERN_ERR "EXT3-fs: group descriptors corrupted!\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: group descriptors corrupted");
goto failed_mount2;
}
sbi->s_gdb_count = db_count;
@@ -1862,7 +1878,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
ext3_count_dirs(sb));
}
if (err) {
- printk(KERN_ERR "EXT3-fs: insufficient memory\n");
+ ext3_msg(sb, KERN_ERR, "error: insufficient memory");
goto failed_mount3;
}

@@ -1910,9 +1926,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
goto failed_mount3;
} else {
if (!silent)
- printk (KERN_ERR
- "ext3: No journal on filesystem on %s\n",
- sb->s_id);
+ ext3_msg(sb, KERN_ERR,
+ "error: no journal found. "
+ "mounting ext3 over ext2?");
goto failed_mount3;
}

@@ -1934,8 +1950,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
case EXT3_MOUNT_WRITEBACK_DATA:
if (!journal_check_available_features
(sbi->s_journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)) {
- printk(KERN_ERR "EXT3-fs: Journal does not support "
- "requested data journaling mode\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: journal does not support "
+ "requested data journaling mode");
goto failed_mount4;
}
default:
@@ -1944,8 +1961,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)

if (test_opt(sb, NOBH)) {
if (!(test_opt(sb, DATA_FLAGS) == EXT3_MOUNT_WRITEBACK_DATA)) {
- printk(KERN_WARNING "EXT3-fs: Ignoring nobh option - "
- "its supported only with writeback mode\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: ignoring nobh option - "
+ "its supported only with writeback mode");
clear_opt(sbi->s_mount_opt, NOBH);
}
}
@@ -1956,18 +1974,18 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)

root = ext3_iget(sb, EXT3_ROOT_INO);
if (IS_ERR(root)) {
- printk(KERN_ERR "EXT3-fs: get root inode failed\n");
+ ext3_msg(sb, KERN_ERR, "error: get root inode failed");
ret = PTR_ERR(root);
goto failed_mount4;
}
if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
iput(root);
- printk(KERN_ERR "EXT3-fs: corrupt root inode, run e2fsck\n");
+ ext3_msg(sb, KERN_ERR, "error: corrupt root inode, run e2fsck");
goto failed_mount4;
}
sb->s_root = d_alloc_root(root);
if (!sb->s_root) {
- printk(KERN_ERR "EXT3-fs: get root dentry failed\n");
+ ext3_msg(sb, KERN_ERR, "error: get root dentry failed");
iput(root);
ret = -ENOMEM;
goto failed_mount4;
@@ -1986,9 +2004,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
ext3_orphan_cleanup(sb, es);
EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
if (needs_recovery)
- printk (KERN_INFO "EXT3-fs: recovery complete.\n");
+ ext3_msg(sb, KERN_INFO, "recovery complete");
ext3_mark_recovery_complete(sb, es);
- printk (KERN_INFO "EXT3-fs: mounted filesystem with %s data mode.\n",
+ ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
"writeback");
@@ -1998,7 +2016,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)

cantfind_ext3:
if (!silent)
- printk(KERN_ERR "VFS: Can't find ext3 filesystem on dev %s.\n",
+ ext3_msg(sb, KERN_INFO,
+ "error: can't find ext3 filesystem on dev %s.",
sb->s_id);
goto failed_mount;

@@ -2066,27 +2085,27 @@ static journal_t *ext3_get_journal(struct super_block *sb,

journal_inode = ext3_iget(sb, journal_inum);
if (IS_ERR(journal_inode)) {
- printk(KERN_ERR "EXT3-fs: no journal found.\n");
+ ext3_msg(sb, KERN_ERR, "error: no journal found");
return NULL;
}
if (!journal_inode->i_nlink) {
make_bad_inode(journal_inode);
iput(journal_inode);
- printk(KERN_ERR "EXT3-fs: journal inode is deleted.\n");
+ ext3_msg(sb, KERN_ERR, "error: journal inode is deleted");
return NULL;
}

jbd_debug(2, "Journal inode found at %p: %Ld bytes\n",
journal_inode, journal_inode->i_size);
if (!S_ISREG(journal_inode->i_mode)) {
- printk(KERN_ERR "EXT3-fs: invalid journal inode.\n");
+ ext3_msg(sb, KERN_ERR, "error: invalid journal inode");
iput(journal_inode);
return NULL;
}

journal = journal_init_inode(journal_inode);
if (!journal) {
- printk(KERN_ERR "EXT3-fs: Could not load journal inode\n");
+ ext3_msg(sb, KERN_ERR, "error: could not load journal inode");
iput(journal_inode);
return NULL;
}
@@ -2108,13 +2127,13 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
struct ext3_super_block * es;
struct block_device *bdev;

- bdev = ext3_blkdev_get(j_dev);
+ bdev = ext3_blkdev_get(j_dev, sb);
if (bdev == NULL)
return NULL;

if (bd_claim(bdev, sb)) {
- printk(KERN_ERR
- "EXT3: failed to claim external journal device.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: failed to claim external journal device");
blkdev_put(bdev, FMODE_READ|FMODE_WRITE);
return NULL;
}
@@ -2122,8 +2141,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
blocksize = sb->s_blocksize;
hblock = bdev_logical_block_size(bdev);
if (blocksize < hblock) {
- printk(KERN_ERR
- "EXT3-fs: blocksize too small for journal device.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: blocksize too small for journal device");
goto out_bdev;
}

@@ -2131,8 +2150,8 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
offset = EXT3_MIN_BLOCK_SIZE % blocksize;
set_blocksize(bdev, blocksize);
if (!(bh = __bread(bdev, sb_block, blocksize))) {
- printk(KERN_ERR "EXT3-fs: couldn't read superblock of "
- "external journal\n");
+ ext3_msg(sb, KERN_ERR, "error: couldn't read superblock of "
+ "external journal");
goto out_bdev;
}

@@ -2140,14 +2159,14 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
if ((le16_to_cpu(es->s_magic) != EXT3_SUPER_MAGIC) ||
!(le32_to_cpu(es->s_feature_incompat) &
EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)) {
- printk(KERN_ERR "EXT3-fs: external journal has "
- "bad superblock\n");
+ ext3_msg(sb, KERN_ERR, "error: external journal has "
+ "bad superblock");
brelse(bh);
goto out_bdev;
}

if (memcmp(EXT3_SB(sb)->s_es->s_journal_uuid, es->s_uuid, 16)) {
- printk(KERN_ERR "EXT3-fs: journal UUID does not match\n");
+ ext3_msg(sb, KERN_ERR, "error: journal UUID does not match");
brelse(bh);
goto out_bdev;
}
@@ -2159,19 +2178,21 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
journal = journal_init_dev(bdev, sb->s_bdev,
start, len, blocksize);
if (!journal) {
- printk(KERN_ERR "EXT3-fs: failed to create device journal\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: failed to create device journal");
goto out_bdev;
}
journal->j_private = sb;
ll_rw_block(READ, 1, &journal->j_sb_buffer);
wait_on_buffer(journal->j_sb_buffer);
if (!buffer_uptodate(journal->j_sb_buffer)) {
- printk(KERN_ERR "EXT3-fs: I/O error on journal device\n");
+ ext3_msg(sb, KERN_ERR, "I/O error on journal device");
goto out_journal;
}
if (be32_to_cpu(journal->j_superblock->s_nr_users) != 1) {
- printk(KERN_ERR "EXT3-fs: External journal has more than one "
- "user (unsupported) - %d\n",
+ ext3_msg(sb, KERN_ERR,
+ "error: external journal has more than one "
+ "user (unsupported) - %d",
be32_to_cpu(journal->j_superblock->s_nr_users));
goto out_journal;
}
@@ -2197,8 +2218,8 @@ static int ext3_load_journal(struct super_block *sb,

if (journal_devnum &&
journal_devnum != le32_to_cpu(es->s_journal_dev)) {
- printk(KERN_INFO "EXT3-fs: external journal device major/minor "
- "numbers have changed\n");
+ ext3_msg(sb, KERN_INFO, "external journal device major/minor "
+ "numbers have changed");
journal_dev = new_decode_dev(journal_devnum);
} else
journal_dev = new_decode_dev(le32_to_cpu(es->s_journal_dev));
@@ -2213,21 +2234,21 @@ static int ext3_load_journal(struct super_block *sb,

if (EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_RECOVER)) {
if (sb->s_flags & MS_RDONLY) {
- printk(KERN_INFO "EXT3-fs: INFO: recovery "
- "required on readonly filesystem.\n");
+ ext3_msg(sb, KERN_INFO,
+ "recovery required on readonly filesystem");
if (really_read_only) {
- printk(KERN_ERR "EXT3-fs: write access "
- "unavailable, cannot proceed.\n");
+ ext3_msg(sb, KERN_ERR, "error: write access "
+ "unavailable, cannot proceed");
return -EROFS;
}
- printk (KERN_INFO "EXT3-fs: write access will "
- "be enabled during recovery.\n");
+ ext3_msg(sb, KERN_INFO,
+ "write access will be enabled during recovery");
}
}

if (journal_inum && journal_dev) {
- printk(KERN_ERR "EXT3-fs: filesystem has both journal "
- "and inode journals!\n");
+ ext3_msg(sb, KERN_ERR, "error: filesystem has both journal "
+ "and inode journals");
return -EINVAL;
}

@@ -2242,7 +2263,7 @@ static int ext3_load_journal(struct super_block *sb,
if (!really_read_only && test_opt(sb, UPDATE_JOURNAL)) {
err = journal_update_format(journal);
if (err) {
- printk(KERN_ERR "EXT3-fs: error updating journal.\n");
+ ext3_msg(sb, KERN_ERR, "error updating journal");
journal_destroy(journal);
return err;
}
@@ -2254,7 +2275,7 @@ static int ext3_load_journal(struct super_block *sb,
err = journal_load(journal);

if (err) {
- printk(KERN_ERR "EXT3-fs: error loading journal.\n");
+ ext3_msg(sb, KERN_ERR, "error loading journal");
journal_destroy(journal);
return err;
}
@@ -2273,16 +2294,17 @@ static int ext3_load_journal(struct super_block *sb,
return 0;
}

-static int ext3_create_journal(struct super_block * sb,
- struct ext3_super_block * es,
+static int ext3_create_journal(struct super_block *sb,
+ struct ext3_super_block *es,
unsigned int journal_inum)
{
journal_t *journal;
int err;

if (sb->s_flags & MS_RDONLY) {
- printk(KERN_ERR "EXT3-fs: readonly filesystem when trying to "
- "create journal.\n");
+ ext3_msg(sb, KERN_ERR,
+ "error: readonly filesystem when trying to "
+ "create journal");
return -EROFS;
}

@@ -2290,12 +2312,12 @@ static int ext3_create_journal(struct super_block * sb,
if (!journal)
return -EINVAL;

- printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n",
+ ext3_msg(sb, KERN_INFO, "creating new journal on inode %u",
journal_inum);

err = journal_create(journal);
if (err) {
- printk(KERN_ERR "EXT3-fs: error creating journal.\n");
+ ext3_msg(sb, KERN_ERR, "error creating journal");
journal_destroy(journal);
return -EIO;
}
@@ -2376,8 +2398,8 @@ out:
* has recorded an error from a previous lifetime, move that error to the
* main filesystem now.
*/
-static void ext3_clear_journal_err(struct super_block * sb,
- struct ext3_super_block * es)
+static void ext3_clear_journal_err(struct super_block *sb,
+ struct ext3_super_block *es)
{
journal_t *journal;
int j_errno;
@@ -2568,10 +2590,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
__le32 ret;
if ((ret = EXT3_HAS_RO_COMPAT_FEATURE(sb,
~EXT3_FEATURE_RO_COMPAT_SUPP))) {
- printk(KERN_WARNING "EXT3-fs: %s: couldn't "
- "remount RDWR because of unsupported "
- "optional features (%x).\n",
- sb->s_id, le32_to_cpu(ret));
+ ext3_msg(sb, KERN_WARNING,
+ "warning: couldn't remount RDWR "
+ "because of unsupported optional "
+ "features (%x)", le32_to_cpu(ret));
err = -EROFS;
goto restore_opts;
}
@@ -2582,11 +2604,10 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
* require a full umount/remount for now.
*/
if (es->s_last_orphan) {
- printk(KERN_WARNING "EXT3-fs: %s: couldn't "
+ ext3_msg(sb, KERN_WARNING, "warning: couldn't "
"remount RDWR because of unprocessed "
"orphan inode list. Please "
- "umount/remount instead.\n",
- sb->s_id);
+ "umount/remount instead.");
err = -EINVAL;
goto restore_opts;
}
@@ -2837,9 +2858,9 @@ static int ext3_quota_on(struct super_block *sb, int type, int format_id,
if (EXT3_SB(sb)->s_qf_names[type]) {
/* Quotafile not of fs root? */
if (path.dentry->d_parent != sb->s_root)
- printk(KERN_WARNING
- "EXT3-fs: Quota file not on filesystem root. "
- "Journaled quota will not work.\n");
+ ext3_msg(sb, KERN_WARNING,
+ "warning: Quota file not on filesystem root. "
+ "Journaled quota will not work.");
}

/*
@@ -2921,8 +2942,9 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
handle_t *handle = journal_current_handle();

if (!handle) {
- printk(KERN_WARNING "EXT3-fs: Quota write (off=%Lu, len=%Lu)"
- " cancelled because transaction is not started.\n",
+ ext3_msg(sb, KERN_WARNING,
+ "warning: quota write (off=%llu, len=%llu)"
+ " cancelled because transaction is not started.",
(unsigned long long)off, (unsigned long long)len);
return -EIO;
}
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
index 7499b36..6b04903 100644
--- a/include/linux/ext3_fs.h
+++ b/include/linux/ext3_fs.h
@@ -918,6 +918,8 @@ extern void ext3_abort (struct super_block *, const char *, const char *, ...)
__attribute__ ((format (printf, 3, 4)));
extern void ext3_warning (struct super_block *, const char *, const char *, ...)
__attribute__ ((format (printf, 3, 4)));
+extern void ext3_msg(struct super_block *, const char *, const char *, ...)
+ __attribute__ ((format (printf, 3, 4)));
extern void ext3_update_dynamic_rev (struct super_block *sb);

#define ext3_std_error(sb, errno) \
--
1.6.3.3


2009-11-22 19:43:08

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v2] Unify log messages in ext3

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

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


2009-11-23 10:36:53

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH v2] Unify log messages in ext3

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

Honza

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

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

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

Honza
--
Jan Kara <[email protected]>
SUSE Labs, CR

2009-11-23 11:45:35

by Oleksij Rempel

[permalink] [raw]
Subject: Unify log messages in ext4

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

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


2009-11-23 11:55:08

by Jan Kara

[permalink] [raw]
Subject: Re: Unify log messages in ext4

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

Honza

--
Jan Kara <[email protected]>
SUSE Labs, CR

2009-11-23 14:11:10

by Theodore Ts'o

[permalink] [raw]
Subject: Re: Unify log messages in ext4

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

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

- Ted

2009-11-23 15:11:56

by Oleksij Rempel

[permalink] [raw]
Subject: Re: Unify log messages in ext4

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

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

Thank you,
Alexey


2009-11-23 16:16:09

by Eric Sandeen

[permalink] [raw]
Subject: Re: Unify log messages in ext4

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

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

-Eric