Althrough old and new sb have the same value for now, it would be better
to build new checkpoint according to new sb.

Signed-off-by: Sheng Yong <shengy...@oppo.com>
---
 fsck/resize.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/fsck/resize.c b/fsck/resize.c
index 049ddd3..1b4ae85 100644
--- a/fsck/resize.c
+++ b/fsck/resize.c
@@ -481,7 +481,7 @@ static void rebuild_checkpoint(struct f2fs_sb_info *sbi,
                set_cp(overprov_segment_count, get_cp(rsvd_segment_count));
 
        set_cp(overprov_segment_count, get_cp(overprov_segment_count) +
-                                               2 * get_sb(segs_per_sec));
+                                               2 * get_newsb(segs_per_sec));
 
        DBG(0, "Info: Overprovision ratio = %.3lf%%\n", c.new_overprovision);
        DBG(0, "Info: Overprovision segments = %u (GC reserved = %u)\n",
@@ -551,11 +551,12 @@ static void rebuild_checkpoint(struct f2fs_sb_info *sbi,
                                                        cpu_to_le32(crc);
 
        /* Write a new checkpoint in the other set */
-       new_cp_blk_no = old_cp_blk_no = get_sb(cp_blkaddr);
+       old_cp_blk_no = get_sb(cp_blkaddr);
+       new_cp_blk_no = get_newsb(cp_blkaddr);
        if (sbi->cur_cp == 2)
                old_cp_blk_no += 1 << get_sb(log_blocks_per_seg);
        else
-               new_cp_blk_no += 1 << get_sb(log_blocks_per_seg);
+               new_cp_blk_no += 1 << get_newsb(log_blocks_per_seg);
 
        /* write first cp */
        ret = dev_write_block(new_cp, new_cp_blk_no++);
-- 
2.40.1



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to