aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunling Zheng <zhengjunling@huawei.com>2016-03-03 10:32:31 +0800
committerluca020400 <luca.stefani.ge1@gmail.com>2016-04-04 17:17:55 +0200
commitb96655498fa77e4b5cb7437dcba60eba90a70c56 (patch)
treeedfbd4a2f5c38965b88f1780f7436adea2c35989
parentec90e1f6509002115e623a82cc077970848af4e0 (diff)
downloadandroid_external_f2fs-tools-b96655498fa77e4b5cb7437dcba60eba90a70c56.tar.gz
android_external_f2fs-tools-b96655498fa77e4b5cb7437dcba60eba90a70c56.tar.bz2
android_external_f2fs-tools-b96655498fa77e4b5cb7437dcba60eba90a70c56.zip
fsck.f2fs: fix incorrect block_addr of node/meta
Fix incorrect block_addr of node or meta inode into 0x1 during build_nat_area_bitmap(). Signed-off-by: Junling Zheng <zhengjunling@huawei.com> Signed-off-by: Liu Xue <liuxueliu.liu@huawei.com> Signed-off-by: Sheng Yong <shengyong1@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fsck/mount.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fsck/mount.c b/fsck/mount.c
index 7c57930..f7fbbd9 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -1665,7 +1665,14 @@ void build_nat_area_bitmap(struct f2fs_sb_info *sbi)
if ((nid + i) == F2FS_NODE_INO(sbi) ||
(nid + i) == F2FS_META_INO(sbi)) {
- ASSERT(nat_block->entries[i].block_addr != 0x0);
+ /* block_addr of node/meta inode should be 0x1 */
+ if (le32_to_cpu(nat_block->entries[i].block_addr) != 0x1) {
+ FIX_MSG("ino: 0x%x node/meta inode, block_addr= 0x%x -> 0x1",
+ nid + i, le32_to_cpu(nat_block->entries[i].block_addr));
+ nat_block->entries[i].block_addr = cpu_to_le32(0x1);
+ ret = dev_write_block(nat_block, block_addr);
+ ASSERT(ret >= 0);
+ }
continue;
}