Lines Matching defs:sbi

16 static inline int f2fs_set_main_bitmap(struct f2fs_sb_info *sbi, u32 blk,
19 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
22 se = get_seg_entry(sbi, GET_SEGNO(sbi, blk));
27 GET_SEGNO(sbi, blk), se->type,
33 GET_SEGNO(sbi, blk), se->type, type);
37 return f2fs_set_bit(BLKOFF_FROM_MAIN(sbi, blk), fsck->main_area_bitmap);
40 static inline int f2fs_test_main_bitmap(struct f2fs_sb_info *sbi, u32 blk)
42 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
44 return f2fs_test_bit(BLKOFF_FROM_MAIN(sbi, blk),
48 static inline int f2fs_test_sit_bitmap(struct f2fs_sb_info *sbi, u32 blk)
50 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
52 return f2fs_test_bit(BLKOFF_FROM_MAIN(sbi, blk), fsck->sit_area_bitmap);
55 static int add_into_hard_link_list(struct f2fs_sb_info *sbi,
58 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
95 static int find_and_dec_hard_link_list(struct f2fs_sb_info *sbi, u32 nid)
97 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
127 static int is_valid_ssa_node_blk(struct f2fs_sb_info *sbi, u32 nid,
133 ret = get_sum_entry(sbi, blk_addr, &sum_entry);
144 GET_SUM_BLKADDR(sbi,
145 GET_SEGNO(sbi, blk_addr)));
147 GET_SEGNO(sbi, blk_addr),
148 OFFSET_IN_SEG(sbi, blk_addr));
158 static int is_valid_ssa_data_blk(struct f2fs_sb_info *sbi, u32 blk_addr,
164 ret = get_sum_entry(sbi, blk_addr, &sum_entry);
192 static int sanity_check_nid(struct f2fs_sb_info *sbi, u32 nid,
197 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
200 if (!IS_VALID_NID(sbi, nid)) {
205 get_node_info(sbi, nid, ni);
211 if (!IS_VALID_BLK_ADDR(sbi, ni->blk_addr)) {
216 if (is_valid_ssa_node_blk(sbi, nid, ni->blk_addr)) {
259 if (f2fs_test_main_bitmap(sbi, ni->blk_addr) != 0) {
274 if (f2fs_test_sit_bitmap(sbi, ni->blk_addr) == 0)
278 if (f2fs_test_main_bitmap(sbi, ni->blk_addr) == 0) {
285 static int fsck_chk_xattr_blk(struct f2fs_sb_info *sbi, u32 ino,
299 if (sanity_check_nid(sbi, x_nid, node_blk,
306 f2fs_set_main_bitmap(sbi, ni.blk_addr, CURSEG_COLD_NODE);
313 int fsck_chk_node_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode,
323 if (sanity_check_nid(sbi, nid, node_blk, ftype, ntype, &ni))
327 fsck_chk_inode_blk(sbi, nid, ftype, node_blk, blk_cnt, &ni);
331 f2fs_set_main_bitmap(sbi, ni.blk_addr,
333 fsck_chk_dnode_blk(sbi, inode, nid, ftype, node_blk,
337 f2fs_set_main_bitmap(sbi, ni.blk_addr,
339 fsck_chk_idnode_blk(sbi, inode, ftype, node_blk,
343 f2fs_set_main_bitmap(sbi, ni.blk_addr,
345 fsck_chk_didnode_blk(sbi, inode, ftype, node_blk,
360 void fsck_chk_inode_blk(struct f2fs_sb_info *sbi, u32 nid,
364 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
373 if (f2fs_test_main_bitmap(sbi, ni->blk_addr) == 0)
377 f2fs_set_main_bitmap(sbi, ni->blk_addr, CURSEG_HOT_NODE);
379 if (f2fs_test_main_bitmap(sbi, ni->blk_addr) == 0) {
380 f2fs_set_main_bitmap(sbi, ni->blk_addr,
384 add_into_hard_link_list(sbi, nid, i_links);
389 if (find_and_dec_hard_link_list(sbi, nid)) {
407 if (fsck_chk_xattr_blk(sbi, nid,
445 ret = fsck_chk_inline_dentries(sbi, node_blk,
461 get_node_info(sbi, nid, &ni);
462 if (IS_VALID_BLK_ADDR(sbi, ni.blk_addr))
470 ret = fsck_chk_data_blk(sbi,
497 ret = fsck_chk_node_blk(sbi, &node_blk->i,
553 int fsck_chk_dnode_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode,
564 ret = fsck_chk_data_blk(sbi,
584 int fsck_chk_idnode_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode,
593 ret = fsck_chk_node_blk(sbi, inode,
604 int fsck_chk_didnode_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode,
613 ret = fsck_chk_node_blk(sbi, inode,
665 static int __chk_dentries(struct f2fs_sb_info *sbi, u32 *child_cnt,
672 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
691 if (IS_VALID_NID(sbi, ino)) {
694 get_node_info(sbi, ino, &ni);
695 if (IS_VALID_BLK_ADDR(sbi, ni.blk_addr))
707 if (!IS_VALID_NID(sbi, le32_to_cpu(dentry[i].ino))) {
766 ret = fsck_chk_node_blk(sbi,
794 int fsck_chk_inline_dentries(struct f2fs_sb_info *sbi,
797 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
805 dentries = __chk_dentries(sbi, child_cnt, child_files,
822 int fsck_chk_dentry_blk(struct f2fs_sb_info *sbi, u32 blk_addr,
825 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
836 dentries = __chk_dentries(sbi, child_cnt, child_files,
857 int fsck_chk_data_blk(struct f2fs_sb_info *sbi, u32 blk_addr,
861 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
869 if (!IS_VALID_BLK_ADDR(sbi, blk_addr)) {
874 if (is_valid_ssa_data_blk(sbi, blk_addr, parent_nid,
881 if (f2fs_test_sit_bitmap(sbi, blk_addr) == 0)
884 if (f2fs_test_main_bitmap(sbi, blk_addr) != 0)
892 f2fs_set_main_bitmap(sbi, blk_addr, CURSEG_HOT_DATA);
893 return fsck_chk_dentry_blk(sbi, blk_addr, child_cnt,
896 f2fs_set_main_bitmap(sbi, blk_addr, CURSEG_WARM_DATA);
901 void fsck_chk_orphan_node(struct f2fs_sb_info *sbi)
906 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
911 start_blk = __start_cp_addr(sbi) + 1 +
912 le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload);
913 orphan_blkaddr = __start_sum_addr(sbi) - 1;
930 fsck_chk_node_blk(sbi, NULL, ino,
938 void fsck_init(struct f2fs_sb_info *sbi)
940 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
941 struct f2fs_sm_info *sm_i = SM_I(sbi);
952 fsck->nr_main_blks = sm_i->main_segments << sbi->log_blocks_per_seg;
957 build_nat_area_bitmap(sbi);
959 build_sit_area_bitmap(sbi);
965 static void fix_nat_entries(struct f2fs_sb_info *sbi)
967 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
972 nullify_nat_entry(sbi, i);
975 static void fix_checkpoint(struct f2fs_sb_info *sbi)
977 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
978 struct f2fs_super_block *raw_sb = sbi->raw_super;
979 struct f2fs_checkpoint *ckp = F2FS_CKPT(sbi);
1001 if (sbi->cur_cp == 2)
1014 struct curseg_info *curseg = CURSEG_I(sbi, i);
1024 int check_curseg_offset(struct f2fs_sb_info *sbi)
1029 struct curseg_info *curseg = CURSEG_I(sbi, i);
1032 se = get_seg_entry(sbi, curseg->segno);
1042 int check_sit_types(struct f2fs_sb_info *sbi)
1047 for (i = 0; i < TOTAL_SEGS(sbi); i++) {
1050 se = get_seg_entry(sbi, i);
1064 int fsck_verify(struct f2fs_sb_info *sbi)
1070 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
1121 if (sbi->total_valid_block_count == fsck->chk.valid_blk_cnt) {
1130 if (sbi->total_valid_node_count == fsck->chk.valid_node_cnt) {
1139 if (sbi->total_valid_node_count == fsck->chk.valid_nat_entry_cnt) {
1148 if (sbi->total_valid_inode_count == fsck->chk.valid_inode_cnt) {
1157 if (le32_to_cpu(F2FS_CKPT(sbi)->free_segment_count) ==
1167 if (check_curseg_offset(sbi) == 0) {
1176 if (check_sit_types(sbi) != 0)
1189 fix_nat_entries(sbi);
1190 rewrite_sit_area_bitmap(sbi);
1191 fix_checkpoint(sbi);
1196 void fsck_free(struct f2fs_sb_info *sbi)
1198 struct f2fs_fsck *fsck = F2FS_FSCK(sbi);