f2fs: introduce __f2fs_commit_super
authorChao Yu <chao2.yu@samsung.com>
Wed, 16 Dec 2015 05:19:35 +0000 (13:19 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 16 Dec 2015 16:58:07 +0000 (08:58 -0800)
Introduce __f2fs_commit_super to include duplicated codes in
f2fs_commit_super for cleanup.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/super.c

index 8c8b4673a5db3d067a5ba69a2ec3ba1e03c931c2..bc1a8cd38bc8c61c9f57f09968483749bc389beb 100644 (file)
@@ -1187,14 +1187,13 @@ next:
        return 0;
 }
 
-int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover)
+int __f2fs_commit_super(struct f2fs_sb_info *sbi, int block)
 {
        struct f2fs_super_block *super = F2FS_RAW_SUPER(sbi);
        struct buffer_head *bh;
        int err;
 
-       /* write back-up superblock first */
-       bh = sb_getblk(sbi->sb, sbi->valid_super_block ? 0 : 1);
+       bh = sb_getblk(sbi->sb, block);
        if (!bh)
                return -EIO;
 
@@ -1208,25 +1207,22 @@ int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover)
        err = __sync_dirty_buffer(bh, WRITE_FLUSH_FUA);
        brelse(bh);
 
+       return err;
+}
+
+int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover)
+{
+       int err;
+
+       /* write back-up superblock first */
+       err = __f2fs_commit_super(sbi, sbi->valid_super_block ? 0 : 1);
+
        /* if we are in recovery path, skip writing valid superblock */
        if (recover || err)
                return err;
 
-       bh = sb_getblk(sbi->sb, sbi->valid_super_block);
-       if (!bh)
-               return -EIO;
-
        /* write current valid superblock */
-       lock_buffer(bh);
-       memcpy(bh->b_data + F2FS_SUPER_OFFSET, super, sizeof(*super));
-       set_buffer_uptodate(bh);
-       set_buffer_dirty(bh);
-       unlock_buffer(bh);
-
-       err = __sync_dirty_buffer(bh, WRITE_FLUSH_FUA);
-       brelse(bh);
-
-       return err;
+       return __f2fs_commit_super(sbi, sbi->valid_super_block);
 }
 
 static int f2fs_fill_super(struct super_block *sb, void *data, int silent)