summaryrefslogtreecommitdiffstats
path: root/fs/f2fs/super.c
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2015-06-08 01:28:03 -0400
committerJaegeuk Kim <jaegeuk@kernel.org>2015-06-08 14:20:51 -0400
commitc5bda1c8b13ad7840ae0e8c9a2926df686ba6e06 (patch)
tree8de3110094792cbbab37362724cf30f6fe758551 /fs/f2fs/super.c
parent09d54cdd207bb3b07e00983f2f50bd68c354ce31 (diff)
f2fs: skip committing valid superblock
In recovery procedure for superblock, we try to write data of valid superblock into invalid one for recovery, work should be finished here, but then still we will write the valid one with its original data. This operation is not needed. Let's skip doing this unnecessary work. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/super.c')
-rw-r--r--fs/f2fs/super.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index d54c54f6a49d..a06b0b46fe69 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1043,7 +1043,7 @@ out:
1043 return 0; 1043 return 0;
1044} 1044}
1045 1045
1046int f2fs_commit_super(struct f2fs_sb_info *sbi) 1046int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover)
1047{ 1047{
1048 struct buffer_head *sbh = sbi->raw_super_buf; 1048 struct buffer_head *sbh = sbi->raw_super_buf;
1049 sector_t block = sbh->b_blocknr; 1049 sector_t block = sbh->b_blocknr;
@@ -1055,7 +1055,9 @@ int f2fs_commit_super(struct f2fs_sb_info *sbi)
1055 err = sync_dirty_buffer(sbh); 1055 err = sync_dirty_buffer(sbh);
1056 1056
1057 sbh->b_blocknr = block; 1057 sbh->b_blocknr = block;
1058 if (err) 1058
1059 /* if we are in recovery path, skip writing valid superblock */
1060 if (recover || err)
1059 goto out; 1061 goto out;
1060 1062
1061 /* write current valid superblock */ 1063 /* write current valid superblock */
@@ -1289,7 +1291,7 @@ try_onemore:
1289 /* recover broken superblock */ 1291 /* recover broken superblock */
1290 if (recovery && !f2fs_readonly(sb) && !bdev_read_only(sb->s_bdev)) { 1292 if (recovery && !f2fs_readonly(sb) && !bdev_read_only(sb->s_bdev)) {
1291 f2fs_msg(sb, KERN_INFO, "Recover invalid superblock"); 1293 f2fs_msg(sb, KERN_INFO, "Recover invalid superblock");
1292 f2fs_commit_super(sbi); 1294 f2fs_commit_super(sbi, true);
1293 } 1295 }
1294 1296
1295 return 0; 1297 return 0;