2015-12-15 09:21:36

by Chao Yu

[permalink] [raw]
Subject: [PATCH 3/3] f2fs: introduce __f2fs_commit_super

Introduce __f2fs_commit_super to include duplicated codes in
f2fs_commit_super for cleanup.

Signed-off-by: Chao Yu <[email protected]>
---
fs/f2fs/super.c | 28 +++++++++++++---------------
1 file changed, 13 insertions(+), 15 deletions(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 2d4fed8..56a160a 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1201,14 +1201,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;

@@ -1222,23 +1221,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);
+ err = __f2fs_commit_super(sbi, sbi->valid_super_block);

return err;
}
--
2.6.3


2015-12-15 22:19:51

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [PATCH 3/3] f2fs: introduce __f2fs_commit_super

Hi Chao,

On Tue, Dec 15, 2015 at 05:20:50PM +0800, Chao Yu wrote:
> Introduce __f2fs_commit_super to include duplicated codes in
> f2fs_commit_super for cleanup.
>
> Signed-off-by: Chao Yu <[email protected]>
> ---
> fs/f2fs/super.c | 28 +++++++++++++---------------
> 1 file changed, 13 insertions(+), 15 deletions(-)
>
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 2d4fed8..56a160a 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -1201,14 +1201,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;
>
> @@ -1222,23 +1221,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);
> + err = __f2fs_commit_super(sbi, sbi->valid_super_block);

I just merged this patch with:

return __f2fs_commit_super().

Thanks,

>
> return err;
> }
> --
> 2.6.3
>