Lines Matching refs:segno
332 static unsigned int get_cb_cost(struct f2fs_sb_info *sbi, unsigned int segno) in get_cb_cost() argument
335 unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); in get_cb_cost()
342 unsigned int usable_segs_per_sec = f2fs_usable_segs_in_sec(sbi, segno); in get_cb_cost()
346 vblocks = get_valid_blocks(sbi, segno, true); in get_cb_cost()
366 unsigned int segno, struct victim_sel_policy *p) in get_gc_cost() argument
369 return get_seg_entry(sbi, segno)->ckpt_valid_blocks; in get_gc_cost()
373 return get_valid_blocks(sbi, segno, true); in get_gc_cost()
375 return get_cb_cost(sbi, segno); in get_gc_cost()
439 unsigned long long mtime, unsigned int segno) in __create_victim_entry() argument
447 ve->segno = segno; in __create_victim_entry()
456 unsigned long long mtime, unsigned int segno) in __insert_victim_entry() argument
478 ve = __create_victim_entry(sbi, mtime, segno); in __insert_victim_entry()
485 struct victim_sel_policy *p, unsigned int segno) in add_victim_entry() argument
488 unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); in add_victim_entry()
495 get_valid_blocks(sbi, segno, true) == 0) in add_victim_entry()
517 __insert_victim_entry(sbi, mtime, segno); in add_victim_entry()
564 vblocks = get_valid_blocks(sbi, ve->segno, true); in atgc_lookup_victim()
580 p->min_segno = ve->segno; in atgc_lookup_victim()
628 vblocks = get_seg_entry(sbi, ve->segno)->ckpt_valid_blocks; in atssr_lookup_victim()
644 p->min_segno = ve->segno; in atssr_lookup_victim()
688 static bool f2fs_pin_section(struct f2fs_sb_info *sbi, unsigned int segno) in f2fs_pin_section() argument
691 unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); in f2fs_pin_section()
725 unsigned int segno) in f2fs_gc_pinned_control() argument
731 if (!f2fs_pin_section(F2FS_I_SB(inode), segno)) in f2fs_gc_pinned_control()
818 unsigned int unit_no, segno; in f2fs_get_victim() local
824 segno = unit_no * p.ofs_unit; in f2fs_get_victim()
825 if (segno >= last_segment) { in f2fs_get_victim()
836 p.offset = segno + p.ofs_unit; in f2fs_get_victim()
845 if (test_bit(segno, sm->invalid_segmap)) in f2fs_get_victim()
849 secno = GET_SEC_FROM_SEG(sbi, segno); in f2fs_get_victim()
861 if (get_ckpt_valid_blocks(sbi, segno, true)) in f2fs_get_victim()
869 if (!f2fs_segment_has_free_slot(sbi, segno)) in f2fs_get_victim()
881 add_victim_entry(sbi, &p, segno); in f2fs_get_victim()
885 cost = get_gc_cost(sbi, segno, &p); in f2fs_get_victim()
888 p.min_segno = segno; in f2fs_get_victim()
893 if (!sm->last_victim[p.gc_mode] && segno <= last_victim) in f2fs_get_victim()
897 sm->last_victim[p.gc_mode] = segno + p.ofs_unit; in f2fs_get_victim()
979 unsigned int segno, int offset) in check_valid_map() argument
986 sentry = get_seg_entry(sbi, segno); in check_valid_map()
998 struct f2fs_summary *sum, unsigned int segno, int gc_type) in gc_node_segment() argument
1006 unsigned int usable_blks_in_seg = f2fs_usable_blks_in_seg(sbi, segno); in gc_node_segment()
1008 start_addr = START_BLOCK(sbi, segno); in gc_node_segment()
1026 if (check_valid_map(sbi, segno, off) == 0) in gc_node_segment()
1046 if (check_valid_map(sbi, segno, off) == 0) { in gc_node_segment()
1156 unsigned int segno = GET_SEGNO(sbi, blkaddr); in is_alive() local
1159 if (unlikely(check_valid_map(sbi, segno, offset))) { in is_alive()
1160 if (!test_and_set_bit(segno, SIT_I(sbi)->invalid_segmap)) { in is_alive()
1162 blkaddr, source_blkaddr, segno); in is_alive()
1265 int gc_type, unsigned int segno, int off) in move_data_block() argument
1294 if (!check_valid_map(F2FS_I_SB(inode), segno, off)) { in move_data_block()
1299 err = f2fs_gc_pinned_control(inode, gc_type, segno); in move_data_block()
1427 unsigned int segno, int off) in move_data_page() argument
1436 if (!check_valid_map(F2FS_I_SB(inode), segno, off)) { in move_data_page()
1441 err = f2fs_gc_pinned_control(inode, gc_type, segno); in move_data_page()
1503 struct gc_inode_list *gc_list, unsigned int segno, int gc_type, in gc_data_segment() argument
1512 unsigned int usable_blks_in_seg = f2fs_usable_blks_in_seg(sbi, segno); in gc_data_segment()
1514 start_addr = START_BLOCK(sbi, segno); in gc_data_segment()
1533 (!force_migrate && get_valid_blocks(sbi, segno, true) == in gc_data_segment()
1537 if (check_valid_map(sbi, segno, off) == 0) in gc_data_segment()
1570 err = f2fs_gc_pinned_control(inode, gc_type, segno); in gc_data_segment()
1639 gc_type, segno, off); in gc_data_segment()
1642 segno, off); in gc_data_segment()
1683 unsigned int segno = start_segno; in do_garbage_collect() local
1686 unsigned char type = IS_DATASEG(get_seg_entry(sbi, segno)->type) ? in do_garbage_collect()
1701 f2fs_usable_segs_in_sec(sbi, segno); in do_garbage_collect()
1703 sanity_check_seg_type(sbi, get_seg_entry(sbi, segno)->type); in do_garbage_collect()
1707 f2fs_ra_meta_pages(sbi, GET_SUM_BLOCK(sbi, segno), in do_garbage_collect()
1708 end_segno - segno, META_SSA, true); in do_garbage_collect()
1711 while (segno < end_segno) { in do_garbage_collect()
1712 sum_page = f2fs_get_sum_page(sbi, segno++); in do_garbage_collect()
1716 end_segno = segno - 1; in do_garbage_collect()
1717 for (segno = start_segno; segno < end_segno; segno++) { in do_garbage_collect()
1719 GET_SUM_BLOCK(sbi, segno)); in do_garbage_collect()
1730 for (segno = start_segno; segno < end_segno; segno++) { in do_garbage_collect()
1734 GET_SUM_BLOCK(sbi, segno)); in do_garbage_collect()
1737 if (get_valid_blocks(sbi, segno, false) == 0) in do_garbage_collect()
1748 segno, type, GET_SUM_TYPE((&sum->footer))); in do_garbage_collect()
1763 submitted += gc_node_segment(sbi, sum->entries, segno, in do_garbage_collect()
1767 segno, gc_type, in do_garbage_collect()
1776 get_valid_blocks(sbi, segno, false) == 0) in do_garbage_collect()
1781 (segno + 1 < end_segno) ? segno + 1 : NULL_SEGNO; in do_garbage_collect()
1800 unsigned int segno = gc_control->victim_segno; in f2fs_gc() local
1858 ret = __get_victim(sbi, &segno, gc_type); in f2fs_gc()
1869 seg_freed = do_garbage_collect(sbi, segno, &gc_list, gc_type, in f2fs_gc()
1873 if (seg_freed == f2fs_usable_segs_in_sec(sbi, segno)) { in f2fs_gc()
1916 segno = NULL_SEGNO; in f2fs_gc()
1989 unsigned int segno, next_inuse, start, end; in free_segment_range() local
2015 for (segno = start; segno <= end; segno += sbi->segs_per_sec) { in free_segment_range()
2021 do_garbage_collect(sbi, segno, &gc_list, FG_GC, true); in free_segment_range()
2024 if (!gc_only && get_valid_blocks(sbi, segno, true)) { in free_segment_range()