From: Sheng Yong <shengyo...@xiaomi.com>

Because node and data blocks are updated out of place on zoned device,
sit_area_bitmap and main_area_bitmap are required to record which
blocks are allocated, sit should be flushed to reflect changes in
block address, and checkpoint should be rewritten to update cursegs.

Signed-off-by: Sheng Yong <shengyo...@xiaomi.com>
---
 fsck/inject.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/fsck/inject.c b/fsck/inject.c
index b3228621de48..96817a806f8f 100644
--- a/fsck/inject.c
+++ b/fsck/inject.c
@@ -1172,6 +1172,9 @@ int do_inject(struct f2fs_sb_info *sbi)
        struct inject_option *opt = (struct inject_option *)c.private;
        int ret = -EINVAL;
 
+       if (c.zoned_model == F2FS_ZONED_HM)
+               fsck_init(sbi);
+
        if (opt->sb >= 0)
                ret = inject_sb(sbi, opt);
        else if (opt->cp >= 0)
@@ -1187,5 +1190,15 @@ int do_inject(struct f2fs_sb_info *sbi)
        else if (opt->dent)
                ret = inject_dentry(sbi, opt);
 
+       if (c.zoned_model == F2FS_ZONED_HM) {
+               if (!ret && (opt->node || opt->dent)) {
+                       write_curseg_info(sbi);
+                       flush_journal_entries(sbi);
+                       flush_sit_entries(sbi);
+                       write_checkpoint(sbi);
+               }
+               fsck_free(sbi);
+       }
+
        return ret;
 }
-- 
2.43.0



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

Reply via email to