+++ /dev/null
-From: Jeff Mahoney <jeffm@suse.com>
-Subject: reiserfs: introduce reiserfs_error()
-
- Although reiserfs can currently handle severe errors such as journal failure,
- it cannot handle less severe errors like metadata i/o failure. The following
- patch adds a reiserfs_error() function akin to the one in ext3.
-
- Subsequent patches will use this new error handler to handle errors more
- gracefully in general.
-
-Signed-off-by: Jeff Mahoney <jeffm@suse.com>
-
---
- fs/reiserfs/prints.c | 25 +++++++++++++++++++++++++
- include/linux/reiserfs_fs.h | 4 ++++
- 2 files changed, 29 insertions(+)
-
---- a/fs/reiserfs/prints.c
-+++ b/fs/reiserfs/prints.c
-@@ -373,6 +373,31 @@ void __reiserfs_panic(struct super_block
- id ? id : "", id ? " " : "", function, error_buf);
- }
-
-+void __reiserfs_error(struct super_block *sb, const char *id,
-+ const char *function, const char *fmt, ...)
-+{
-+ do_reiserfs_warning(fmt);
-+
-+ BUG_ON(sb == NULL);
-+
-+ if (reiserfs_error_panic(sb))
-+ __reiserfs_panic(sb, id, function, error_buf);
-+
-+ if (id && id[0])
-+ printk(KERN_CRIT "REISERFS error (device %s): %s %s: %s\n",
-+ sb->s_id, id, function, error_buf);
-+ else
-+ printk(KERN_CRIT "REISERFS error (device %s): %s: %s\n",
-+ sb->s_id, function, error_buf);
-+
-+ if (sb->s_flags & MS_RDONLY)
-+ return;
-+
-+ reiserfs_info(sb, "Remounting filesystem read-only\n");
-+ sb->s_flags |= MS_RDONLY;
-+ reiserfs_abort_journal(sb, -EIO);
-+}
-+
- void reiserfs_abort(struct super_block *sb, int errno, const char *fmt, ...)
- {
- do_reiserfs_warning(fmt);
---- a/include/linux/reiserfs_fs.h
-+++ b/include/linux/reiserfs_fs.h
-@@ -2006,6 +2006,10 @@ void __reiserfs_panic(struct super_block
- __attribute__ ((noreturn));
- #define reiserfs_panic(s, id, fmt, args...) \
- __reiserfs_panic(s, id, __func__, fmt, ##args)
-+void __reiserfs_error(struct super_block *s, const char *id,
-+ const char *function, const char *fmt, ...);
-+#define reiserfs_error(s, id, fmt, args...) \
-+ __reiserfs_error(s, id, __func__, fmt, ##args)
- void reiserfs_info(struct super_block *s, const char *fmt, ...);
- void reiserfs_debug(struct super_block *s, int level, const char *fmt, ...);
- void print_indirect_item(struct buffer_head *bh, int item_num);