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()
160 static int find_fsync_dnodes(struct f2fs_sb_info *sbi, struct list_head *head) in find_fsync_dnodes() argument
162 unsigned long long cp_ver = cur_cp_version(F2FS_CKPT(sbi)); in find_fsync_dnodes()
169 curseg = CURSEG_I(sbi, CURSEG_WARM_NODE); in find_fsync_dnodes()
170 blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); in find_fsync_dnodes()
172 ra_meta_pages(sbi, blkaddr, 1, META_POR); in find_fsync_dnodes()
177 if (blkaddr < MAIN_BLKADDR(sbi) || blkaddr >= MAX_BLKADDR(sbi)) in find_fsync_dnodes()
180 page = get_meta_page(sbi, blkaddr); in find_fsync_dnodes()
191 err = recover_inode_page(sbi, page); in find_fsync_dnodes()
206 entry->inode = f2fs_iget(sbi->sb, ino_of_node(page)); in find_fsync_dnodes()
230 ra_meta_pages_cond(sbi, blkaddr); in find_fsync_dnodes()
247 static int check_index_in_prev_nodes(struct f2fs_sb_info *sbi, in check_index_in_prev_nodes() argument
251 unsigned int segno = GET_SEGNO(sbi, blkaddr); in check_index_in_prev_nodes()
252 unsigned short blkoff = GET_BLKOFF_FROM_SEG0(sbi, blkaddr); in check_index_in_prev_nodes()
263 sentry = get_seg_entry(sbi, segno); in check_index_in_prev_nodes()
269 struct curseg_info *curseg = CURSEG_I(sbi, i); in check_index_in_prev_nodes()
276 sum_page = get_sum_page(sbi, segno); in check_index_in_prev_nodes()
296 node_page = get_node_page(sbi, nid); in check_index_in_prev_nodes()
306 inode = f2fs_iget(sbi->sb, ino); in check_index_in_prev_nodes()
346 static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode, in do_recover_data() argument
376 f2fs_lock_op(sbi); in do_recover_data()
382 f2fs_unlock_op(sbi); in do_recover_data()
388 get_node_info(sbi, dn.nid, &ni); in do_recover_data()
389 f2fs_bug_on(sbi, ni.ino != ino_of_node(page)); in do_recover_data()
390 f2fs_bug_on(sbi, ofs_of_node(dn.node_page) != ofs_of_node(page)); in do_recover_data()
399 dest >= MAIN_BLKADDR(sbi) && dest < MAX_BLKADDR(sbi)) { in do_recover_data()
404 f2fs_bug_on(sbi, err); in do_recover_data()
408 err = check_index_in_prev_nodes(sbi, dest, &dn); in do_recover_data()
415 recover_data_page(sbi, NULL, &sum, src, dest); in do_recover_data()
433 f2fs_unlock_op(sbi); in do_recover_data()
435 f2fs_msg(sbi->sb, KERN_NOTICE, in do_recover_data()
441 static int recover_data(struct f2fs_sb_info *sbi, in recover_data() argument
444 unsigned long long cp_ver = cur_cp_version(F2FS_CKPT(sbi)); in recover_data()
451 curseg = CURSEG_I(sbi, type); in recover_data()
452 blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); in recover_data()
457 if (blkaddr < MAIN_BLKADDR(sbi) || blkaddr >= MAX_BLKADDR(sbi)) in recover_data()
460 ra_meta_pages_cond(sbi, blkaddr); in recover_data()
462 page = get_meta_page(sbi, blkaddr); in recover_data()
486 err = do_recover_data(sbi, entry->inode, page, blkaddr); in recover_data()
503 allocate_new_segments(sbi); in recover_data()
507 int recover_fsync_data(struct f2fs_sb_info *sbi) in recover_fsync_data() argument
509 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_WARM_NODE); in recover_fsync_data()
523 set_sbi_flag(sbi, SBI_POR_DOING); in recover_fsync_data()
526 mutex_lock(&sbi->cp_mutex); in recover_fsync_data()
528 blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); in recover_fsync_data()
530 err = find_fsync_dnodes(sbi, &inode_list); in recover_fsync_data()
540 err = recover_data(sbi, &inode_list, CURSEG_WARM_NODE); in recover_fsync_data()
542 f2fs_bug_on(sbi, !list_empty(&inode_list)); in recover_fsync_data()
548 truncate_inode_pages_range(META_MAPPING(sbi), in recover_fsync_data()
549 MAIN_BLKADDR(sbi) << PAGE_CACHE_SHIFT, -1); in recover_fsync_data()
552 truncate_inode_pages_final(NODE_MAPPING(sbi)); in recover_fsync_data()
553 truncate_inode_pages_final(META_MAPPING(sbi)); in recover_fsync_data()
556 clear_sbi_flag(sbi, SBI_POR_DOING); in recover_fsync_data()
558 discard_next_dnode(sbi, blkaddr); in recover_fsync_data()
561 while (get_pages(sbi, F2FS_DIRTY_META)) in recover_fsync_data()
562 sync_meta_pages(sbi, META, LONG_MAX); in recover_fsync_data()
563 set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); in recover_fsync_data()
564 mutex_unlock(&sbi->cp_mutex); in recover_fsync_data()
569 mutex_unlock(&sbi->cp_mutex); in recover_fsync_data()
570 write_checkpoint(sbi, &cpc); in recover_fsync_data()
572 mutex_unlock(&sbi->cp_mutex); in recover_fsync_data()