Lines Matching refs:segno

748 static void __locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno,  in __locate_dirty_segment()  argument
754 if (IS_CURSEG(sbi, segno)) in __locate_dirty_segment()
757 if (!test_and_set_bit(segno, dirty_i->dirty_segmap[dirty_type])) in __locate_dirty_segment()
761 struct seg_entry *sentry = get_seg_entry(sbi, segno); in __locate_dirty_segment()
768 if (!test_and_set_bit(segno, dirty_i->dirty_segmap[t])) in __locate_dirty_segment()
773 static void __remove_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno, in __remove_dirty_segment() argument
778 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[dirty_type])) in __remove_dirty_segment()
782 struct seg_entry *sentry = get_seg_entry(sbi, segno); in __remove_dirty_segment()
785 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[t])) in __remove_dirty_segment()
788 if (get_valid_blocks(sbi, segno, true) == 0) in __remove_dirty_segment()
789 clear_bit(GET_SEC_FROM_SEG(sbi, segno), in __remove_dirty_segment()
799 static void locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno) in locate_dirty_segment() argument
804 if (segno == NULL_SEGNO || IS_CURSEG(sbi, segno)) in locate_dirty_segment()
809 valid_blocks = get_valid_blocks(sbi, segno, false); in locate_dirty_segment()
812 __locate_dirty_segment(sbi, segno, PRE); in locate_dirty_segment()
813 __remove_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
815 __locate_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
818 __remove_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
936 unsigned int segno; in __check_sit_bitmap() local
942 segno = GET_SEGNO(sbi, blk); in __check_sit_bitmap()
943 sentry = get_seg_entry(sbi, segno); in __check_sit_bitmap()
946 if (end < START_BLOCK(sbi, segno + 1)) in __check_sit_bitmap()
953 blk = START_BLOCK(sbi, segno + 1); in __check_sit_bitmap()
1794 unsigned int segno; in set_prefree_as_free_segments() local
1797 for_each_set_bit(segno, dirty_i->dirty_segmap[PRE], MAIN_SEGS(sbi)) in set_prefree_as_free_segments()
1798 __set_test_and_free(sbi, segno); in set_prefree_as_free_segments()
1962 static bool __mark_sit_entry_dirty(struct f2fs_sb_info *sbi, unsigned int segno) in __mark_sit_entry_dirty() argument
1966 if (!__test_and_set_bit(segno, sit_i->dirty_sentries_bitmap)) { in __mark_sit_entry_dirty()
1975 unsigned int segno, int modified) in __set_sit_entry_type() argument
1977 struct seg_entry *se = get_seg_entry(sbi, segno); in __set_sit_entry_type()
1980 __mark_sit_entry_dirty(sbi, segno); in __set_sit_entry_type()
1986 unsigned int segno, offset; in update_sit_entry() local
1993 segno = GET_SEGNO(sbi, blkaddr); in update_sit_entry()
1995 se = get_seg_entry(sbi, segno); in update_sit_entry()
2064 __mark_sit_entry_dirty(sbi, segno); in update_sit_entry()
2070 get_sec_entry(sbi, segno)->valid_blocks += del; in update_sit_entry()
2075 unsigned int segno = GET_SEGNO(sbi, addr); in f2fs_invalidate_blocks() local
2090 locate_dirty_segment(sbi, segno); in f2fs_invalidate_blocks()
2098 unsigned int segno, offset; in f2fs_is_checkpointed_data() local
2107 segno = GET_SEGNO(sbi, blkaddr); in f2fs_is_checkpointed_data()
2108 se = get_seg_entry(sbi, segno); in f2fs_is_checkpointed_data()
2164 struct page *f2fs_get_sum_page(struct f2fs_sb_info *sbi, unsigned int segno) in f2fs_get_sum_page() argument
2166 return f2fs_get_meta_page_nofail(sbi, GET_SUM_BLOCK(sbi, segno)); in f2fs_get_sum_page()
2214 unsigned int segno = curseg->segno + 1; in is_next_segment_free() local
2217 if (segno < MAIN_SEGS(sbi) && segno % sbi->segs_per_sec) in is_next_segment_free()
2218 return !test_bit(segno, free_i->free_segmap); in is_next_segment_free()
2230 unsigned int segno, secno, zoneno; in get_new_segment() local
2242 segno = find_next_zero_bit(free_i->free_segmap, in get_new_segment()
2244 if (segno < GET_SEG_FROM_SEC(sbi, hint + 1)) in get_new_segment()
2274 segno = GET_SEG_FROM_SEC(sbi, secno); in get_new_segment()
2307 f2fs_bug_on(sbi, test_bit(segno, free_i->free_segmap)); in get_new_segment()
2308 __set_inuse(sbi, segno); in get_new_segment()
2309 *newseg = segno; in get_new_segment()
2318 curseg->segno = curseg->next_segno; in reset_curseg()
2319 curseg->zone = GET_ZONE_FROM_SEG(sbi, curseg->segno); in reset_curseg()
2329 __set_sit_entry_type(sbi, type, curseg->segno, modified); in reset_curseg()
2336 return CURSEG_I(sbi, type)->segno; in __get_next_segno()
2349 return CURSEG_I(sbi, type)->segno; in __get_next_segno()
2359 unsigned int segno = curseg->segno; in new_curseg() local
2363 GET_SUM_BLOCK(sbi, segno)); in new_curseg()
2370 segno = __get_next_segno(sbi, type); in new_curseg()
2371 get_new_segment(sbi, &segno, new_sec, dir); in new_curseg()
2372 curseg->next_segno = segno; in new_curseg()
2380 struct seg_entry *se = get_seg_entry(sbi, seg->segno); in __next_free_blkoff()
2422 GET_SUM_BLOCK(sbi, curseg->segno)); in change_curseg()
2444 unsigned segno = NULL_SEGNO; in get_ssr_segment() local
2449 if (v_ops->get_victim(sbi, &segno, BG_GC, type, SSR)) { in get_ssr_segment()
2450 curseg->next_segno = segno; in get_ssr_segment()
2476 if (v_ops->get_victim(sbi, &segno, BG_GC, i, SSR)) { in get_ssr_segment()
2477 curseg->next_segno = segno; in get_ssr_segment()
2518 old_segno = curseg->segno; in f2fs_allocate_new_segments()
3074 unsigned int segno) in __f2fs_get_curseg() argument
3079 if (CURSEG_I(sbi, i)->segno == segno) in __f2fs_get_curseg()
3091 unsigned int segno, old_cursegno; in f2fs_do_replace_block() local
3096 segno = GET_SEGNO(sbi, new_blkaddr); in f2fs_do_replace_block()
3097 se = get_seg_entry(sbi, segno); in f2fs_do_replace_block()
3104 if (se->valid_blocks == 0 && !IS_CURSEG(sbi, segno)) { in f2fs_do_replace_block()
3111 if (IS_CURSEG(sbi, segno)) { in f2fs_do_replace_block()
3113 type = __f2fs_get_curseg(sbi, segno); in f2fs_do_replace_block()
3126 old_cursegno = curseg->segno; in f2fs_do_replace_block()
3130 if (segno != curseg->segno) { in f2fs_do_replace_block()
3131 curseg->next_segno = segno; in f2fs_do_replace_block()
3152 if (old_cursegno != curseg->segno) { in f2fs_do_replace_block()
3236 unsigned int segno; in read_compacted_summaries() local
3239 segno = le32_to_cpu(ckpt->cur_data_segno[i]); in read_compacted_summaries()
3241 seg_i->next_segno = segno; in read_compacted_summaries()
3279 unsigned int segno = 0; in read_normal_summaries() local
3285 segno = le32_to_cpu(ckpt->cur_data_segno[type]); in read_normal_summaries()
3293 segno = le32_to_cpu(ckpt->cur_node_segno[type - in read_normal_summaries()
3301 blk_addr = GET_SUM_BLOCK(sbi, segno); in read_normal_summaries()
3318 err = f2fs_restore_node_summary(sbi, segno, sum); in read_normal_summaries()
3335 curseg->next_segno = segno; in read_normal_summaries()
3491 unsigned int segno) in get_current_sit_page() argument
3493 return f2fs_get_meta_page_nofail(sbi, current_sit_addr(sbi, segno)); in get_current_sit_page()
3546 static void add_sit_entry(unsigned int segno, struct list_head *head) in add_sit_entry() argument
3549 unsigned int start_segno = START_SEGNO(segno); in add_sit_entry()
3571 unsigned int segno; in add_sits_in_set() local
3573 for_each_set_bit(segno, bitmap, MAIN_SEGS(sbi)) in add_sits_in_set()
3574 add_sit_entry(segno, set_list); in add_sits_in_set()
3585 unsigned int segno; in remove_sits_in_journal() local
3588 segno = le32_to_cpu(segno_in_journal(journal, i)); in remove_sits_in_journal()
3589 dirtied = __mark_sit_entry_dirty(sbi, segno); in remove_sits_in_journal()
3592 add_sit_entry(segno, &SM_I(sbi)->sit_entry_set); in remove_sits_in_journal()
3643 unsigned int segno = start_segno; in f2fs_flush_sit_entries() local
3657 for_each_set_bit_from(segno, bitmap, end) { in f2fs_flush_sit_entries()
3660 se = get_seg_entry(sbi, segno); in f2fs_flush_sit_entries()
3669 cpc->trim_start = segno; in f2fs_flush_sit_entries()
3675 SIT_JOURNAL, segno, 1); in f2fs_flush_sit_entries()
3678 cpu_to_le32(segno); in f2fs_flush_sit_entries()
3681 check_block_count(sbi, segno, in f2fs_flush_sit_entries()
3684 sit_offset = SIT_ENTRY_OFFSET(sit_i, segno); in f2fs_flush_sit_entries()
3687 check_block_count(sbi, segno, in f2fs_flush_sit_entries()
3691 __clear_bit(segno, bitmap); in f2fs_flush_sit_entries()
3875 array[i].segno = NULL_SEGNO; in build_curseg()
4017 __set_test_and_inuse(sbi, curseg_t->segno); in init_free_segmap()
4025 unsigned int segno = 0, offset = 0; in init_dirty_segmap() local
4030 segno = find_next_inuse(free_i, MAIN_SEGS(sbi), offset); in init_dirty_segmap()
4031 if (segno >= MAIN_SEGS(sbi)) in init_dirty_segmap()
4033 offset = segno + 1; in init_dirty_segmap()
4034 valid_blocks = get_valid_blocks(sbi, segno, false); in init_dirty_segmap()
4042 __locate_dirty_segment(sbi, segno, DIRTY); in init_dirty_segmap()
4091 unsigned int segno; in init_min_max_mtime() local
4097 for (segno = 0; segno < MAIN_SEGS(sbi); segno += sbi->segs_per_sec) { in init_min_max_mtime()
4102 mtime += get_seg_entry(sbi, segno + i)->mtime; in init_min_max_mtime()