ext3: wrong error behavior]
PATCH 1/1 ext3: wrong error behavior]
SWsoft Virtuozzo/OpenVZ Linux kernel team has discovered that ext3 error behavior was broken in linux kernels since 2.5.x versions by the following patch:
2002/10/31 02:15:26-05:00 [email protected] Default mount options from superblock for ext2/3 filesystems
http://linux.bkbits.net:8080/linux-2.6/gnupatch@3dc0d88eKbV9ivV4ptRNM8fBuA3JBQ
In case ext3 file system is mounted with errors=continue (EXT3_ERRORS_CONTINUE) errors should be ignored when possible. However at present in case of any error kernel aborts journal and remounts filesystem to read-only. Such behavior was hit number of times and noted to differ from that of 2.4.x kernels.
This patch fixes this:
- do nothing in case of EXT3_ERRORS_CONTINUE,
- set EXT3_MOUNT_ABORT and call journal_abort() in all other cases
- panic() should be called after ext3_commit_super() to save sb marked as EXT3_ERROR_FS
Thank you,
Vasily Averin
SWsoft Virtuozzo/OpenVZ Linux kernel team
fs/ext3/super.c renamed from fs/ext3/super.c.orig +6 -5
@@ -159,20 +159,21 @@ static void ext3_handle_error(struct supif (sb->s_flags &MS_RDONLY )return ; -if (test_opt (sb,ERRORS_RO )) { -printk (KERN_CRIT "Remounting filesystem read-only\n" ); - sb->s_flags |=MS_RDONLY ; - }else { +if (!test_opt (sb,ERRORS_CONT )) {journal_t *journal =EXT3_SB (sb)->s_journal;EXT3_SB (sb)->s_mount_opt |=EXT3_MOUNT_ABORT ;if (journal)journal_abort (journal, -EIO ); } +if (test_opt (sb,ERRORS_RO )) { +printk (KERN_CRIT "Remounting filesystem read-only\n" ); + sb->s_flags |=MS_RDONLY ; + } +ext3_commit_super (sb, es,1 );if (test_opt (sb,ERRORS_PANIC ))panic ("EXT3-fs (device %s): panic forced after error\n" , sb->s_id); -ext3_commit_super (sb, es,1 ); } void ext3_error (struct super_block * sb, const char * function,
_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel