f2fs: clear SBI_POR_DOING before initing inmem curseg
authorSheng Yong <shengyong@oppo.com>
Thu, 21 Nov 2024 08:26:57 +0000 (16:26 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 21 Nov 2024 16:14:07 +0000 (16:14 +0000)
SBI_POR_DOING can be cleared after recovery is completed, so that
changes made before recovery can be persistent, and subsequent
errors can be recorded into cp/sb.

Signed-off-by: Song Feng <songfeng@oppo.com>
Signed-off-by: Yongpeng Yang <yangyongpeng1@oppo.com>
Signed-off-by: Sheng Yong <shengyong@oppo.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/super.c

index 41cc13b..c0670cd 100644 (file)
@@ -4784,13 +4784,13 @@ reset_checkpoint:
        if (err)
                goto free_meta;
 
+       /* f2fs_recover_fsync_data() cleared this already */
+       clear_sbi_flag(sbi, SBI_POR_DOING);
+
        err = f2fs_init_inmem_curseg(sbi);
        if (err)
                goto sync_free_meta;
 
-       /* f2fs_recover_fsync_data() cleared this already */
-       clear_sbi_flag(sbi, SBI_POR_DOING);
-
        if (test_opt(sbi, DISABLE_CHECKPOINT)) {
                err = f2fs_disable_checkpoint(sbi);
                if (err)