[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20160304153001.797069080@1wt.eu>
Date: Fri, 04 Mar 2016 16:30:25 +0100
From: Willy Tarreau <w@....eu>
To: linux-kernel@...r.kernel.org, stable@...r.kernel.org
Cc: NamJae Jeon <linkinjeon@...il.com>, Joe Perches <joe@...ches.com>,
Jan Kara <jack@...e.cz>, Willy Tarreau <w@....eu>
Subject: [PATCH 2.6.32 25/55] udf: Promote some debugging messages to udf_error
2.6.32-longterm review patch. If anyone has any objections, please let me know.
------------------
From: Joe Perches <joe@...ches.com>
commit 7e273e3b41e32716dc122b293b5f15635af495ff upstream.
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>
Reviewed-by: NamJae Jeon <linkinjeon@...il.com>
Signed-off-by: Joe Perches <joe@...ches.com>
Signed-off-by: Jan Kara <jack@...e.cz>
[wt: this one is only here to export udf_error() for next commit]
Signed-off-by: Willy Tarreau <w@....eu>
---
fs/udf/misc.c | 13 +++++++++----
fs/udf/super.c | 6 ++----
fs/udf/udfdecl.h | 8 +++++++-
3 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/fs/udf/misc.c b/fs/udf/misc.c
index 9215700..a85fa7c 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;
}
@@ -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;
}
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 0045ebc..197eb58 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -94,8 +94,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)
{
@@ -2098,8 +2096,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 1b56330..6337725 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);
@@ -110,7 +117,6 @@ struct extent_position {
};
/* super.c */
-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.12.2.21.g234cd45.dirty
Powered by blists - more mailing lists