diff options
Diffstat (limited to 'fs/ext3')
-rw-r--r-- | fs/ext3/super.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index bc7a768f9bb4..4b526b496102 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c | |||
@@ -159,20 +159,21 @@ static void ext3_handle_error(struct super_block *sb) | |||
159 | if (sb->s_flags & MS_RDONLY) | 159 | if (sb->s_flags & MS_RDONLY) |
160 | return; | 160 | return; |
161 | 161 | ||
162 | if (test_opt (sb, ERRORS_RO)) { | 162 | if (!test_opt (sb, ERRORS_CONT)) { |
163 | printk (KERN_CRIT "Remounting filesystem read-only\n"); | ||
164 | sb->s_flags |= MS_RDONLY; | ||
165 | } else { | ||
166 | journal_t *journal = EXT3_SB(sb)->s_journal; | 163 | journal_t *journal = EXT3_SB(sb)->s_journal; |
167 | 164 | ||
168 | EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT; | 165 | EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT; |
169 | if (journal) | 166 | if (journal) |
170 | journal_abort(journal, -EIO); | 167 | journal_abort(journal, -EIO); |
171 | } | 168 | } |
169 | if (test_opt (sb, ERRORS_RO)) { | ||
170 | printk (KERN_CRIT "Remounting filesystem read-only\n"); | ||
171 | sb->s_flags |= MS_RDONLY; | ||
172 | } | ||
173 | ext3_commit_super(sb, es, 1); | ||
172 | if (test_opt(sb, ERRORS_PANIC)) | 174 | if (test_opt(sb, ERRORS_PANIC)) |
173 | panic("EXT3-fs (device %s): panic forced after error\n", | 175 | panic("EXT3-fs (device %s): panic forced after error\n", |
174 | sb->s_id); | 176 | sb->s_id); |
175 | ext3_commit_super(sb, es, 1); | ||
176 | } | 177 | } |
177 | 178 | ||
178 | void ext3_error (struct super_block * sb, const char * function, | 179 | void ext3_error (struct super_block * sb, const char * function, |