Skip to content

Commit

Permalink
udf: Promote some debugging messages to udf_error
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: NamJae Jeon <[email protected]>
Signed-off-by: Joe Perches <[email protected]>
Signed-off-by: Jan Kara <[email protected]>
  • Loading branch information
JoePerches authored and jankara committed Oct 10, 2011
1 parent 40bfa16 commit 7e273e3
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 10 deletions.
13 changes: 9 additions & 4 deletions fs/udf/misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,14 +204,15 @@ 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)
return NULL;

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;
}
Expand All @@ -227,15 +228,19 @@ struct buffer_head *udf_read_tagged(struct super_block *sb, uint32_t block,
}

/* 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;
}
Expand Down
6 changes: 2 additions & 4 deletions fs/udf/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -2096,8 +2094,8 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
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;

Expand Down
9 changes: 7 additions & 2 deletions fs/udf/udfdecl.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 7e273e3

Please sign in to comment.