Lines Matching refs:sbi
16 static inline int f2fs_set_main_bitmap(struct f2fs_sb_info *sbi, u32 blk) in f2fs_set_main_bitmap() argument
18 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in f2fs_set_main_bitmap()
20 return f2fs_set_bit(BLKOFF_FROM_MAIN(sbi, blk), fsck->main_area_bitmap); in f2fs_set_main_bitmap()
23 static inline int f2fs_test_main_bitmap(struct f2fs_sb_info *sbi, u32 blk) in f2fs_test_main_bitmap() argument
25 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in f2fs_test_main_bitmap()
27 return f2fs_test_bit(BLKOFF_FROM_MAIN(sbi, blk), in f2fs_test_main_bitmap()
31 static inline int f2fs_test_sit_bitmap(struct f2fs_sb_info *sbi, u32 blk) in f2fs_test_sit_bitmap() argument
33 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in f2fs_test_sit_bitmap()
35 return f2fs_test_bit(BLKOFF_FROM_MAIN(sbi, blk), fsck->sit_area_bitmap); in f2fs_test_sit_bitmap()
38 static int add_into_hard_link_list(struct f2fs_sb_info *sbi, in add_into_hard_link_list() argument
41 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in add_into_hard_link_list()
78 static int find_and_dec_hard_link_list(struct f2fs_sb_info *sbi, u32 nid) in find_and_dec_hard_link_list() argument
80 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in find_and_dec_hard_link_list()
110 static int is_valid_ssa_node_blk(struct f2fs_sb_info *sbi, u32 nid, in is_valid_ssa_node_blk() argument
116 ret = get_sum_entry(sbi, blk_addr, &sum_entry); in is_valid_ssa_node_blk()
127 GET_SUM_BLKADDR(sbi, in is_valid_ssa_node_blk()
128 GET_SEGNO(sbi, blk_addr))); in is_valid_ssa_node_blk()
130 GET_SEGNO(sbi, blk_addr), in is_valid_ssa_node_blk()
131 OFFSET_IN_SEG(sbi, blk_addr)); in is_valid_ssa_node_blk()
141 static int is_valid_ssa_data_blk(struct f2fs_sb_info *sbi, u32 blk_addr, in is_valid_ssa_data_blk() argument
147 ret = get_sum_entry(sbi, blk_addr, &sum_entry); in is_valid_ssa_data_blk()
175 static int sanity_check_nid(struct f2fs_sb_info *sbi, u32 nid, in sanity_check_nid() argument
180 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in sanity_check_nid()
183 if (!IS_VALID_NID(sbi, nid)) { in sanity_check_nid()
188 get_node_info(sbi, nid, ni); in sanity_check_nid()
194 if (!IS_VALID_BLK_ADDR(sbi, ni->blk_addr)) { in sanity_check_nid()
199 if (is_valid_ssa_node_blk(sbi, nid, ni->blk_addr)) { in sanity_check_nid()
242 if (f2fs_test_main_bitmap(sbi, ni->blk_addr) != 0) { in sanity_check_nid()
257 if (f2fs_test_sit_bitmap(sbi, ni->blk_addr) == 0) in sanity_check_nid()
261 if (f2fs_test_main_bitmap(sbi, ni->blk_addr) == 0) { in sanity_check_nid()
268 static int fsck_chk_xattr_blk(struct f2fs_sb_info *sbi, u32 ino, in fsck_chk_xattr_blk() argument
282 if (sanity_check_nid(sbi, x_nid, node_blk, in fsck_chk_xattr_blk()
289 f2fs_set_main_bitmap(sbi, ni.blk_addr); in fsck_chk_xattr_blk()
296 int fsck_chk_node_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode, in fsck_chk_node_blk() argument
306 if (sanity_check_nid(sbi, nid, node_blk, ftype, ntype, &ni)) in fsck_chk_node_blk()
310 fsck_chk_inode_blk(sbi, nid, ftype, node_blk, blk_cnt, &ni); in fsck_chk_node_blk()
312 f2fs_set_main_bitmap(sbi, ni.blk_addr); in fsck_chk_node_blk()
316 fsck_chk_dnode_blk(sbi, inode, nid, ftype, node_blk, in fsck_chk_node_blk()
320 fsck_chk_idnode_blk(sbi, inode, ftype, node_blk, in fsck_chk_node_blk()
324 fsck_chk_didnode_blk(sbi, inode, ftype, node_blk, in fsck_chk_node_blk()
339 void fsck_chk_inode_blk(struct f2fs_sb_info *sbi, u32 nid, in fsck_chk_inode_blk() argument
343 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fsck_chk_inode_blk()
352 if (f2fs_test_main_bitmap(sbi, ni->blk_addr) == 0) in fsck_chk_inode_blk()
356 f2fs_set_main_bitmap(sbi, ni->blk_addr); in fsck_chk_inode_blk()
358 if (f2fs_test_main_bitmap(sbi, ni->blk_addr) == 0) { in fsck_chk_inode_blk()
359 f2fs_set_main_bitmap(sbi, ni->blk_addr); in fsck_chk_inode_blk()
362 add_into_hard_link_list(sbi, nid, i_links); in fsck_chk_inode_blk()
367 if (find_and_dec_hard_link_list(sbi, nid)) { in fsck_chk_inode_blk()
385 if (fsck_chk_xattr_blk(sbi, nid, in fsck_chk_inode_blk()
423 ret = fsck_chk_inline_dentries(sbi, node_blk, in fsck_chk_inode_blk()
435 ret = fsck_chk_data_blk(sbi, in fsck_chk_inode_blk()
462 ret = fsck_chk_node_blk(sbi, &node_blk->i, in fsck_chk_inode_blk()
518 int fsck_chk_dnode_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode, in fsck_chk_dnode_blk() argument
528 ret = fsck_chk_data_blk(sbi, in fsck_chk_dnode_blk()
539 int fsck_chk_idnode_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode, in fsck_chk_idnode_blk() argument
548 ret = fsck_chk_node_blk(sbi, inode, in fsck_chk_idnode_blk()
559 int fsck_chk_didnode_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode, in fsck_chk_didnode_blk() argument
568 ret = fsck_chk_node_blk(sbi, inode, in fsck_chk_didnode_blk()
620 static int __chk_dentries(struct f2fs_sb_info *sbi, u32 *child_cnt, in __chk_dentries() argument
627 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in __chk_dentries()
643 if (!IS_VALID_NID(sbi, le32_to_cpu(dentry[i].ino))) { in __chk_dentries()
702 ret = fsck_chk_node_blk(sbi, in __chk_dentries()
729 int fsck_chk_inline_dentries(struct f2fs_sb_info *sbi, in fsck_chk_inline_dentries() argument
732 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fsck_chk_inline_dentries()
740 dentries = __chk_dentries(sbi, child_cnt, child_files, in fsck_chk_inline_dentries()
757 int fsck_chk_dentry_blk(struct f2fs_sb_info *sbi, u32 blk_addr, in fsck_chk_dentry_blk() argument
760 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fsck_chk_dentry_blk()
771 dentries = __chk_dentries(sbi, child_cnt, child_files, in fsck_chk_dentry_blk()
792 int fsck_chk_data_blk(struct f2fs_sb_info *sbi, u32 blk_addr, in fsck_chk_data_blk() argument
796 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fsck_chk_data_blk()
804 if (!IS_VALID_BLK_ADDR(sbi, blk_addr)) { in fsck_chk_data_blk()
809 if (is_valid_ssa_data_blk(sbi, blk_addr, parent_nid, in fsck_chk_data_blk()
816 if (f2fs_test_sit_bitmap(sbi, blk_addr) == 0) in fsck_chk_data_blk()
819 if (f2fs_test_main_bitmap(sbi, blk_addr) != 0) in fsck_chk_data_blk()
823 f2fs_set_main_bitmap(sbi, blk_addr); in fsck_chk_data_blk()
828 return fsck_chk_dentry_blk(sbi, blk_addr, child_cnt, in fsck_chk_data_blk()
833 void fsck_chk_orphan_node(struct f2fs_sb_info *sbi) in fsck_chk_orphan_node() argument
838 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); in fsck_chk_orphan_node()
846 start_blk = __start_cp_addr(sbi) + 1 + in fsck_chk_orphan_node()
847 le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload); in fsck_chk_orphan_node()
848 orphan_blkaddr = __start_sum_addr(sbi) - 1; in fsck_chk_orphan_node()
860 fsck_chk_node_blk(sbi, NULL, ino, in fsck_chk_orphan_node()
868 void fsck_init(struct f2fs_sb_info *sbi) in fsck_init() argument
870 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fsck_init()
871 struct f2fs_sm_info *sm_i = SM_I(sbi); in fsck_init()
882 fsck->nr_main_blks = sm_i->main_segments << sbi->log_blocks_per_seg; in fsck_init()
887 build_nat_area_bitmap(sbi); in fsck_init()
889 build_sit_area_bitmap(sbi); in fsck_init()
895 static void fix_nat_entries(struct f2fs_sb_info *sbi) in fix_nat_entries() argument
897 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fix_nat_entries()
902 nullify_nat_entry(sbi, i); in fix_nat_entries()
905 static void fix_checkpoint(struct f2fs_sb_info *sbi) in fix_checkpoint() argument
907 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fix_checkpoint()
908 struct f2fs_super_block *raw_sb = sbi->raw_super; in fix_checkpoint()
909 struct f2fs_checkpoint *ckp = F2FS_CKPT(sbi); in fix_checkpoint()
931 if (sbi->cur_cp == 2) in fix_checkpoint()
944 struct curseg_info *curseg = CURSEG_I(sbi, i); in fix_checkpoint()
954 int check_curseg_offset(struct f2fs_sb_info *sbi) in check_curseg_offset() argument
959 struct curseg_info *curseg = CURSEG_I(sbi, i); in check_curseg_offset()
962 se = get_seg_entry(sbi, curseg->segno); in check_curseg_offset()
972 int fsck_verify(struct f2fs_sb_info *sbi) in fsck_verify() argument
977 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fsck_verify()
1028 if (sbi->total_valid_block_count == fsck->chk.valid_blk_cnt) { in fsck_verify()
1037 if (sbi->total_valid_node_count == fsck->chk.valid_node_cnt) { in fsck_verify()
1046 if (sbi->total_valid_node_count == fsck->chk.valid_nat_entry_cnt) { in fsck_verify()
1055 if (sbi->total_valid_inode_count == fsck->chk.valid_inode_cnt) { in fsck_verify()
1064 if (le32_to_cpu(F2FS_CKPT(sbi)->free_segment_count) == in fsck_verify()
1074 if (check_curseg_offset(sbi) == 0) { in fsck_verify()
1093 fix_nat_entries(sbi); in fsck_verify()
1094 rewrite_sit_area_bitmap(sbi); in fsck_verify()
1095 fix_checkpoint(sbi); in fsck_verify()
1100 void fsck_free(struct f2fs_sb_info *sbi) in fsck_free() argument
1102 struct f2fs_fsck *fsck = F2FS_FSCK(sbi); in fsck_free()