[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 10 Oct 2011 19:06:39 +0900
From: NamJae Jeon <linkinjeon@...il.com>
To: Joe Perches <joe@...ches.com>
Cc: Jan Kara <jack@...e.cz>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/6] udf: Promote some debugging messages to udf_error
2011/10/10 Joe Perches <joe@...ches.com>:
> 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 <linkinjeon@...il.com>
> Signed-off-by: Joe Perches <joe@...ches.com>
Reviewed-by: NamJae Jeon <linkinjeon@...il.com>
> ---
> 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
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists