Lines Matching refs:sbi

50 bool space_for_roll_forward(struct f2fs_sb_info *sbi)  in space_for_roll_forward()  argument
52 if (sbi->last_valid_block_count + sbi->alloc_valid_block_count in space_for_roll_forward()
53 > sbi->user_block_count) in space_for_roll_forward()
171 static int find_fsync_dnodes(struct f2fs_sb_info *sbi, struct list_head *head) in find_fsync_dnodes() argument
173 unsigned long long cp_ver = cur_cp_version(F2FS_CKPT(sbi)); in find_fsync_dnodes()
180 curseg = CURSEG_I(sbi, CURSEG_WARM_NODE); in find_fsync_dnodes()
181 blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); in find_fsync_dnodes()
183 ra_meta_pages(sbi, blkaddr, 1, META_POR, true); in find_fsync_dnodes()
188 if (!is_valid_blkaddr(sbi, blkaddr, META_POR)) in find_fsync_dnodes()
191 page = get_tmp_page(sbi, blkaddr); in find_fsync_dnodes()
202 err = recover_inode_page(sbi, page); in find_fsync_dnodes()
217 entry->inode = f2fs_iget(sbi->sb, ino_of_node(page)); in find_fsync_dnodes()
241 ra_meta_pages_cond(sbi, blkaddr); in find_fsync_dnodes()
258 static int check_index_in_prev_nodes(struct f2fs_sb_info *sbi, in check_index_in_prev_nodes() argument
262 unsigned int segno = GET_SEGNO(sbi, blkaddr); in check_index_in_prev_nodes()
263 unsigned short blkoff = GET_BLKOFF_FROM_SEG0(sbi, blkaddr); in check_index_in_prev_nodes()
274 sentry = get_seg_entry(sbi, segno); in check_index_in_prev_nodes()
280 struct curseg_info *curseg = CURSEG_I(sbi, i); in check_index_in_prev_nodes()
287 sum_page = get_sum_page(sbi, segno); in check_index_in_prev_nodes()
307 node_page = get_node_page(sbi, nid); in check_index_in_prev_nodes()
317 inode = f2fs_iget(sbi->sb, ino); in check_index_in_prev_nodes()
357 static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode, in do_recover_data() argument
394 get_node_info(sbi, dn.nid, &ni); in do_recover_data()
395 f2fs_bug_on(sbi, ni.ino != ino_of_node(page)); in do_recover_data()
396 f2fs_bug_on(sbi, ofs_of_node(dn.node_page) != ofs_of_node(page)); in do_recover_data()
421 f2fs_bug_on(sbi, err); in do_recover_data()
426 if (is_valid_blkaddr(sbi, dest, META_POR)) { in do_recover_data()
431 f2fs_bug_on(sbi, err); in do_recover_data()
435 err = check_index_in_prev_nodes(sbi, dest, &dn); in do_recover_data()
440 f2fs_replace_block(sbi, &dn, src, dest, in do_recover_data()
456 f2fs_msg(sbi->sb, KERN_NOTICE, in do_recover_data()
462 static int recover_data(struct f2fs_sb_info *sbi, in recover_data() argument
465 unsigned long long cp_ver = cur_cp_version(F2FS_CKPT(sbi)); in recover_data()
472 curseg = CURSEG_I(sbi, type); in recover_data()
473 blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); in recover_data()
478 if (!is_valid_blkaddr(sbi, blkaddr, META_POR)) in recover_data()
481 ra_meta_pages_cond(sbi, blkaddr); in recover_data()
483 page = get_tmp_page(sbi, blkaddr); in recover_data()
507 err = do_recover_data(sbi, entry->inode, page, blkaddr); in recover_data()
524 allocate_new_segments(sbi); in recover_data()
528 int recover_fsync_data(struct f2fs_sb_info *sbi) in recover_fsync_data() argument
530 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_WARM_NODE); in recover_fsync_data()
544 mutex_lock(&sbi->cp_mutex); in recover_fsync_data()
546 blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); in recover_fsync_data()
549 err = find_fsync_dnodes(sbi, &inode_list); in recover_fsync_data()
559 err = recover_data(sbi, &inode_list, CURSEG_WARM_NODE); in recover_fsync_data()
561 f2fs_bug_on(sbi, !list_empty(&inode_list)); in recover_fsync_data()
567 truncate_inode_pages_range(META_MAPPING(sbi), in recover_fsync_data()
568 (loff_t)MAIN_BLKADDR(sbi) << PAGE_CACHE_SHIFT, -1); in recover_fsync_data()
571 truncate_inode_pages_final(NODE_MAPPING(sbi)); in recover_fsync_data()
572 truncate_inode_pages_final(META_MAPPING(sbi)); in recover_fsync_data()
575 clear_sbi_flag(sbi, SBI_POR_DOING); in recover_fsync_data()
579 if (discard_next_dnode(sbi, blkaddr)) in recover_fsync_data()
583 while (get_pages(sbi, F2FS_DIRTY_META)) in recover_fsync_data()
584 sync_meta_pages(sbi, META, LONG_MAX); in recover_fsync_data()
588 invalidate_mapping_pages(META_MAPPING(sbi), in recover_fsync_data()
591 set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); in recover_fsync_data()
592 mutex_unlock(&sbi->cp_mutex); in recover_fsync_data()
597 mutex_unlock(&sbi->cp_mutex); in recover_fsync_data()
598 write_checkpoint(sbi, &cpc); in recover_fsync_data()
600 mutex_unlock(&sbi->cp_mutex); in recover_fsync_data()