aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext3/super.c
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-15 14:11:45 -0400
committerSage Weil <sage@inktank.com>2013-08-15 14:11:45 -0400
commitee3e542fec6e69bc9fb668698889a37d93950ddf (patch)
treee74ee766a4764769ef1d3d45d266b4dea64101d3 /fs/ext3/super.c
parentfe2a801b50c0bb8039d627e5ae1fec249d10ff39 (diff)
parentf1d6e17f540af37bb1891480143669ba7636c4cf (diff)
Merge remote-tracking branch 'linus/master' into testing
Diffstat (limited to 'fs/ext3/super.c')
-rw-r--r--fs/ext3/super.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 6356665a74bb..c47f14750722 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -174,6 +174,11 @@ static void ext3_handle_error(struct super_block *sb)
174 if (test_opt (sb, ERRORS_RO)) { 174 if (test_opt (sb, ERRORS_RO)) {
175 ext3_msg(sb, KERN_CRIT, 175 ext3_msg(sb, KERN_CRIT,
176 "error: remounting filesystem read-only"); 176 "error: remounting filesystem read-only");
177 /*
178 * Make sure updated value of ->s_mount_state will be visible
179 * before ->s_flags update.
180 */
181 smp_wmb();
177 sb->s_flags |= MS_RDONLY; 182 sb->s_flags |= MS_RDONLY;
178 } 183 }
179 ext3_commit_super(sb, es, 1); 184 ext3_commit_super(sb, es, 1);
@@ -291,8 +296,14 @@ void ext3_abort(struct super_block *sb, const char *function,
291 ext3_msg(sb, KERN_CRIT, 296 ext3_msg(sb, KERN_CRIT,
292 "error: remounting filesystem read-only"); 297 "error: remounting filesystem read-only");
293 EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS; 298 EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS;
294 sb->s_flags |= MS_RDONLY;
295 set_opt(EXT3_SB(sb)->s_mount_opt, ABORT); 299 set_opt(EXT3_SB(sb)->s_mount_opt, ABORT);
300 /*
301 * Make sure updated value of ->s_mount_state will be visible
302 * before ->s_flags update.
303 */
304 smp_wmb();
305 sb->s_flags |= MS_RDONLY;
306
296 if (EXT3_SB(sb)->s_journal) 307 if (EXT3_SB(sb)->s_journal)
297 journal_abort(EXT3_SB(sb)->s_journal, -EIO); 308 journal_abort(EXT3_SB(sb)->s_journal, -EIO);
298} 309}