From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752769Ab1JJII1 (ORCPT ); Mon, 10 Oct 2011 04:08:27 -0400 Received: from perches-mx.perches.com ([206.117.179.246]:43568 "EHLO labridge.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752455Ab1JJII0 (ORCPT ); Mon, 10 Oct 2011 04:08:26 -0400 From: Joe Perches To: Jan Kara Cc: NamJae Jeon , linux-kernel@vger.kernel.org Subject: [PATCH 1/6] udf: Promote some debugging messages to udf_error Date: Mon, 10 Oct 2011 01:08:02 -0700 Message-Id: X-Mailer: git-send-email 1.7.6.405.gc1be0 In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If there is a problem with a scratched disc or loader, it's valuable to know which error occurred. Convert some debug messages to udf_error, neaten those messages too. Add the calculated tag checksum and the read checksum to error message. Make udf_error a public function and move the logging prototypes together. Original-patch-by: NamJae Jeon Signed-off-by: Joe Perches --- fs/udf/misc.c | 21 ++++++++++++++------- fs/udf/super.c | 6 ++---- fs/udf/udfdecl.h | 9 +++++++-- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/fs/udf/misc.c b/fs/udf/misc.c index 9215700..87667f8 100644 --- a/fs/udf/misc.c +++ b/fs/udf/misc.c @@ -204,6 +204,7 @@ struct buffer_head *udf_read_tagged(struct super_block *sb, uint32_t block, { struct tag *tag_p; struct buffer_head *bh = NULL; + u8 checksum; /* Read the block */ if (block == 0xFFFFFFFF) @@ -211,7 +212,7 @@ struct buffer_head *udf_read_tagged(struct super_block *sb, uint32_t block, bh = udf_tread(sb, block); if (!bh) { - udf_debug("block=%d, location=%d: read failed\n", + udf_error(sb, __func__, "read failed, block=%u, location=%d\n", block, location); return NULL; } @@ -221,21 +222,26 @@ struct buffer_head *udf_read_tagged(struct super_block *sb, uint32_t block, *ident = le16_to_cpu(tag_p->tagIdent); if (location != le32_to_cpu(tag_p->tagLocation)) { - udf_debug("location mismatch block %u, tag %u != %u\n", + udf_error(sb, __func__, + "location mismatch, block %u, tag %u != %u\n", block, le32_to_cpu(tag_p->tagLocation), location); goto error_out; } /* Verify the tag checksum */ - if (udf_tag_checksum(tag_p) != tag_p->tagChecksum) { - printk(KERN_ERR "udf: tag checksum failed block %d\n", block); + checksum = udf_tag_checksum(tag_p); + if (checksum != tag_p->tagChecksum) { + udf_error(sb, __func__, + "tag checksum failed, block %u: 0x%02x != 0x%02x\n", + block, checksum, tag_p->tagChecksum); goto error_out; } /* Verify the tag version */ if (tag_p->descVersion != cpu_to_le16(0x0002U) && tag_p->descVersion != cpu_to_le16(0x0003U)) { - udf_debug("tag version 0x%04x != 0x0002 || 0x0003 block %d\n", + udf_error(sb, __func__, + "tag version 0x%04x != 0x0002 || 0x0003, block %u\n", le16_to_cpu(tag_p->descVersion), block); goto error_out; } @@ -247,8 +253,9 @@ struct buffer_head *udf_read_tagged(struct super_block *sb, uint32_t block, le16_to_cpu(tag_p->descCRCLength))) return bh; - udf_debug("Crc failure block %d: crc = %d, crclen = %d\n", block, - le16_to_cpu(tag_p->descCRC), le16_to_cpu(tag_p->descCRCLength)); + udf_error(sb, __func__, "crc failure, block %u: crc = %d, crclen = %d\n", + block, le16_to_cpu(tag_p->descCRC), + le16_to_cpu(tag_p->descCRCLength)); error_out: brelse(bh); diff --git a/fs/udf/super.c b/fs/udf/super.c index 7b27b06..80f47ce 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c @@ -92,8 +92,6 @@ static void udf_close_lvid(struct super_block *); static unsigned int udf_count_free(struct super_block *); static int udf_statfs(struct dentry *, struct kstatfs *); static int udf_show_options(struct seq_file *, struct vfsmount *); -static void udf_error(struct super_block *sb, const char *function, - const char *fmt, ...); struct logicalVolIntegrityDescImpUse *udf_sb_lvidiu(struct udf_sb_info *sbi) { @@ -2096,8 +2094,8 @@ error_out: return -EINVAL; } -static void udf_error(struct super_block *sb, const char *function, - const char *fmt, ...) +void udf_error(struct super_block *sb, const char *function, + const char *fmt, ...) { va_list args; diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h index dbd52d4b..81e66af 100644 --- a/fs/udf/udfdecl.h +++ b/fs/udf/udfdecl.h @@ -29,6 +29,13 @@ do { \ #define udf_debug(f, a...) /**/ #endif +__attribute__((format(printf, 3, 4))) +extern void udf_warning(struct super_block *, const char *, const char *, ...); + +__attribute__((format(printf, 3, 4))) +extern void udf_error(struct super_block *sb, const char *function, + const char *fmt, ...); + #define udf_info(f, a...) \ printk(KERN_INFO "UDF-fs INFO " f, ##a); @@ -112,8 +119,6 @@ struct extent_position { /* super.c */ -__attribute__((format(printf, 3, 4))) -extern void udf_warning(struct super_block *, const char *, const char *, ...); static inline void udf_updated_lvid(struct super_block *sb) { struct buffer_head *bh = UDF_SB(sb)->s_lvid_bh; -- 1.7.6.405.gc1be0