From: Eric Sandeen Subject: Re: [PATCH v1] Unify log messages in ext3 Date: Sat, 21 Nov 2009 17:55:24 -0600 Message-ID: <4B087DEC.5010402@redhat.com> References: <1258799115-10704-1-git-send-email-bug-track@fisher-privat.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Jan Kara , Andreas Dilger , linux-ext4@vger.kernel.org, Theodore Tso To: Alexey Fisher Return-path: Received: from mx1.redhat.com ([209.132.183.28]:10762 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753323AbZKUXzg (ORCPT ); Sat, 21 Nov 2009 18:55:36 -0500 In-Reply-To: <1258799115-10704-1-git-send-email-bug-track@fisher-privat.net> Sender: linux-ext4-owner@vger.kernel.org List-ID: 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 > --- > 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; > }