Add error handling to minix filesystem for inode corruption detection
We would like to provide early and specific warnings of filesystem corruption without running into generic WARN_ONs and BUG_ONs. Towards this goal, ext4, e.g., has a EFSCORRUPTED errno and a standardized inode corruption message format. This patch adds this errno and message format to the minix filesystem. Signed-off-by: Jori Koolstra <jkoolstra@xs4all.nl> Link: https://patch.msgid.link/20251104143005.3283980-2-jkoolstra@xs4all.nl Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>pull/1354/merge
parent
3a86608788
commit
21215ce7a9
|
|
@ -26,6 +26,22 @@ static int minix_write_inode(struct inode *inode,
|
|||
struct writeback_control *wbc);
|
||||
static int minix_statfs(struct dentry *dentry, struct kstatfs *buf);
|
||||
|
||||
void __minix_error_inode(struct inode *inode, const char *function,
|
||||
unsigned int line, const char *fmt, ...)
|
||||
{
|
||||
struct va_format vaf;
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
vaf.fmt = fmt;
|
||||
vaf.va = &args;
|
||||
printk(KERN_CRIT "minix-fs error (device %s): %s:%d: "
|
||||
"inode #%lu: comm %s: %pV\n",
|
||||
inode->i_sb->s_id, function, line, inode->i_ino,
|
||||
current->comm, &vaf);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
static void minix_evict_inode(struct inode *inode)
|
||||
{
|
||||
truncate_inode_pages_final(&inode->i_data);
|
||||
|
|
|
|||
|
|
@ -42,6 +42,9 @@ struct minix_sb_info {
|
|||
unsigned short s_version;
|
||||
};
|
||||
|
||||
void __minix_error_inode(struct inode *inode, const char *function,
|
||||
unsigned int line, const char *fmt, ...);
|
||||
|
||||
struct inode *minix_iget(struct super_block *, unsigned long);
|
||||
struct minix_inode *minix_V1_raw_inode(struct super_block *, ino_t, struct buffer_head **);
|
||||
struct minix2_inode *minix_V2_raw_inode(struct super_block *, ino_t, struct buffer_head **);
|
||||
|
|
@ -168,4 +171,10 @@ static inline int minix_test_bit(int nr, const void *vaddr)
|
|||
|
||||
#endif
|
||||
|
||||
#define minix_error_inode(inode, fmt, ...) \
|
||||
__minix_error_inode((inode), __func__, __LINE__, \
|
||||
(fmt), ##__VA_ARGS__)
|
||||
|
||||
#define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */
|
||||
|
||||
#endif /* FS_MINIX_H */
|
||||
|
|
|
|||
Loading…
Reference in New Issue