f2fs: do not change the valid_block value if cur_valid_map was wrongly set or cleared
authorYunlong Song <yunlong.song@huawei.com>
Wed, 2 Aug 2017 14:16:54 +0000 (22:16 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 10 Aug 2017 00:45:23 +0000 (17:45 -0700)
Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/segment.c

index 7781203a40770e0666716133fd7ae1569727792b..1675a2dcd599279fee724fcebae938b445f62bbb 100644 (file)
@@ -1538,6 +1538,8 @@ static void update_sit_entry(struct f2fs_sb_info *sbi, block_t blkaddr, int del)
                        f2fs_msg(sbi->sb, KERN_ERR,
                                "Bitmap was wrongly set, blk:%u", blkaddr);
                        f2fs_bug_on(sbi, 1);
+                       se->valid_blocks--;
+                       del = 0;
                }
 
                if (f2fs_discard_en(sbi) &&
@@ -1565,6 +1567,8 @@ static void update_sit_entry(struct f2fs_sb_info *sbi, block_t blkaddr, int del)
                        f2fs_msg(sbi->sb, KERN_ERR,
                                "Bitmap was wrongly cleared, blk:%u", blkaddr);
                        f2fs_bug_on(sbi, 1);
+                       se->valid_blocks++;
+                       del = 0;
                }
 
                if (f2fs_discard_en(sbi) &&