Lines Matching refs:segno

767 static void __locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno,  in __locate_dirty_segment()  argument
773 if (IS_CURSEG(sbi, segno)) in __locate_dirty_segment()
776 if (!test_and_set_bit(segno, dirty_i->dirty_segmap[dirty_type])) in __locate_dirty_segment()
780 struct seg_entry *sentry = get_seg_entry(sbi, segno); in __locate_dirty_segment()
787 if (!test_and_set_bit(segno, dirty_i->dirty_segmap[t])) in __locate_dirty_segment()
792 static void __remove_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno, in __remove_dirty_segment() argument
797 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[dirty_type])) in __remove_dirty_segment()
801 struct seg_entry *sentry = get_seg_entry(sbi, segno); in __remove_dirty_segment()
804 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[t])) in __remove_dirty_segment()
807 if (get_valid_blocks(sbi, segno, true) == 0) { in __remove_dirty_segment()
808 clear_bit(GET_SEC_FROM_SEG(sbi, segno), in __remove_dirty_segment()
811 clear_bit(segno, SIT_I(sbi)->invalid_segmap); in __remove_dirty_segment()
822 static void locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno) in locate_dirty_segment() argument
827 if (segno == NULL_SEGNO || IS_CURSEG(sbi, segno)) in locate_dirty_segment()
832 valid_blocks = get_valid_blocks(sbi, segno, false); in locate_dirty_segment()
833 ckpt_valid_blocks = get_ckpt_valid_blocks(sbi, segno); in locate_dirty_segment()
837 __locate_dirty_segment(sbi, segno, PRE); in locate_dirty_segment()
838 __remove_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
840 __locate_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
843 __remove_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
853 unsigned int segno; in f2fs_dirty_to_prefree() local
856 for_each_set_bit(segno, dirty_i->dirty_segmap[DIRTY], MAIN_SEGS(sbi)) { in f2fs_dirty_to_prefree()
857 if (get_valid_blocks(sbi, segno, false)) in f2fs_dirty_to_prefree()
859 if (IS_CURSEG(sbi, segno)) in f2fs_dirty_to_prefree()
861 __locate_dirty_segment(sbi, segno, PRE); in f2fs_dirty_to_prefree()
862 __remove_dirty_segment(sbi, segno, DIRTY); in f2fs_dirty_to_prefree()
876 unsigned int segno; in f2fs_get_unusable_blocks() local
879 for_each_set_bit(segno, dirty_i->dirty_segmap[DIRTY], MAIN_SEGS(sbi)) { in f2fs_get_unusable_blocks()
880 se = get_seg_entry(sbi, segno); in f2fs_get_unusable_blocks()
910 unsigned int segno = 0; in get_free_segment() local
913 for_each_set_bit(segno, dirty_i->dirty_segmap[DIRTY], MAIN_SEGS(sbi)) { in get_free_segment()
914 if (get_valid_blocks(sbi, segno, false)) in get_free_segment()
916 if (get_ckpt_valid_blocks(sbi, segno)) in get_free_segment()
919 return segno; in get_free_segment()
1038 unsigned int segno; in __check_sit_bitmap() local
1044 segno = GET_SEGNO(sbi, blk); in __check_sit_bitmap()
1045 sentry = get_seg_entry(sbi, segno); in __check_sit_bitmap()
1048 if (end < START_BLOCK(sbi, segno + 1)) in __check_sit_bitmap()
1055 blk = START_BLOCK(sbi, segno + 1); in __check_sit_bitmap()
1914 unsigned int segno; in set_prefree_as_free_segments() local
1917 for_each_set_bit(segno, dirty_i->dirty_segmap[PRE], MAIN_SEGS(sbi)) in set_prefree_as_free_segments()
1918 __set_test_and_free(sbi, segno); in set_prefree_as_free_segments()
2089 static bool __mark_sit_entry_dirty(struct f2fs_sb_info *sbi, unsigned int segno) in __mark_sit_entry_dirty() argument
2093 if (!__test_and_set_bit(segno, sit_i->dirty_sentries_bitmap)) { in __mark_sit_entry_dirty()
2102 unsigned int segno, int modified) in __set_sit_entry_type() argument
2104 struct seg_entry *se = get_seg_entry(sbi, segno); in __set_sit_entry_type()
2107 __mark_sit_entry_dirty(sbi, segno); in __set_sit_entry_type()
2113 unsigned int segno, offset; in update_sit_entry() local
2120 segno = GET_SEGNO(sbi, blkaddr); in update_sit_entry()
2122 se = get_seg_entry(sbi, segno); in update_sit_entry()
2202 __mark_sit_entry_dirty(sbi, segno); in update_sit_entry()
2208 get_sec_entry(sbi, segno)->valid_blocks += del; in update_sit_entry()
2213 unsigned int segno = GET_SEGNO(sbi, addr); in f2fs_invalidate_blocks() local
2228 locate_dirty_segment(sbi, segno); in f2fs_invalidate_blocks()
2236 unsigned int segno, offset; in f2fs_is_checkpointed_data() local
2245 segno = GET_SEGNO(sbi, blkaddr); in f2fs_is_checkpointed_data()
2246 se = get_seg_entry(sbi, segno); in f2fs_is_checkpointed_data()
2302 struct page *f2fs_get_sum_page(struct f2fs_sb_info *sbi, unsigned int segno) in f2fs_get_sum_page() argument
2304 return f2fs_get_meta_page_nofail(sbi, GET_SUM_BLOCK(sbi, segno)); in f2fs_get_sum_page()
2352 unsigned int segno = curseg->segno + 1; in is_next_segment_free() local
2355 if (segno < MAIN_SEGS(sbi) && segno % sbi->segs_per_sec) in is_next_segment_free()
2356 return !test_bit(segno, free_i->free_segmap); in is_next_segment_free()
2368 unsigned int segno, secno, zoneno; in get_new_segment() local
2380 segno = find_next_zero_bit(free_i->free_segmap, in get_new_segment()
2382 if (segno < GET_SEG_FROM_SEC(sbi, hint + 1)) in get_new_segment()
2412 segno = GET_SEG_FROM_SEC(sbi, secno); in get_new_segment()
2445 f2fs_bug_on(sbi, test_bit(segno, free_i->free_segmap)); in get_new_segment()
2446 __set_inuse(sbi, segno); in get_new_segment()
2447 *newseg = segno; in get_new_segment()
2456 curseg->segno = curseg->next_segno; in reset_curseg()
2457 curseg->zone = GET_ZONE_FROM_SEG(sbi, curseg->segno); in reset_curseg()
2467 __set_sit_entry_type(sbi, type, curseg->segno, modified); in reset_curseg()
2474 return CURSEG_I(sbi, type)->segno; in __get_next_segno()
2490 return CURSEG_I(sbi, type)->segno; in __get_next_segno()
2500 unsigned int segno = curseg->segno; in new_curseg() local
2504 GET_SUM_BLOCK(sbi, segno)); in new_curseg()
2511 segno = __get_next_segno(sbi, type); in new_curseg()
2512 get_new_segment(sbi, &segno, new_sec, dir); in new_curseg()
2513 curseg->next_segno = segno; in new_curseg()
2521 struct seg_entry *se = get_seg_entry(sbi, seg->segno); in __next_free_blkoff()
2563 GET_SUM_BLOCK(sbi, curseg->segno)); in change_curseg()
2586 unsigned segno = NULL_SEGNO; in get_ssr_segment() local
2591 if (v_ops->get_victim(sbi, &segno, BG_GC, type, SSR)) { in get_ssr_segment()
2592 curseg->next_segno = segno; in get_ssr_segment()
2618 if (v_ops->get_victim(sbi, &segno, BG_GC, i, SSR)) { in get_ssr_segment()
2619 curseg->next_segno = segno; in get_ssr_segment()
2626 segno = get_free_segment(sbi); in get_ssr_segment()
2627 if (segno != NULL_SEGNO) { in get_ssr_segment()
2628 curseg->next_segno = segno; in get_ssr_segment()
2664 unsigned int segno; in allocate_segment_for_resize() local
2670 segno = CURSEG_I(sbi, type)->segno; in allocate_segment_for_resize()
2671 if (segno < start || segno > end) in allocate_segment_for_resize()
2681 locate_dirty_segment(sbi, segno); in allocate_segment_for_resize()
2685 if (segno != curseg->segno) in allocate_segment_for_resize()
2687 type, segno, curseg->segno); in allocate_segment_for_resize()
2703 old_segno = curseg->segno; in f2fs_allocate_new_segments()
3241 unsigned int segno; in f2fs_inplace_write_data() local
3247 segno = GET_SEGNO(sbi, fio->new_blkaddr); in f2fs_inplace_write_data()
3249 if (!IS_DATASEG(get_seg_entry(sbi, segno)->type)) { in f2fs_inplace_write_data()
3252 __func__, segno); in f2fs_inplace_write_data()
3271 unsigned int segno) in __f2fs_get_curseg() argument
3276 if (CURSEG_I(sbi, i)->segno == segno) in __f2fs_get_curseg()
3288 unsigned int segno, old_cursegno; in f2fs_do_replace_block() local
3293 segno = GET_SEGNO(sbi, new_blkaddr); in f2fs_do_replace_block()
3294 se = get_seg_entry(sbi, segno); in f2fs_do_replace_block()
3301 if (se->valid_blocks == 0 && !IS_CURSEG(sbi, segno)) { in f2fs_do_replace_block()
3308 if (IS_CURSEG(sbi, segno)) { in f2fs_do_replace_block()
3310 type = __f2fs_get_curseg(sbi, segno); in f2fs_do_replace_block()
3323 old_cursegno = curseg->segno; in f2fs_do_replace_block()
3327 if (segno != curseg->segno) { in f2fs_do_replace_block()
3328 curseg->next_segno = segno; in f2fs_do_replace_block()
3349 if (old_cursegno != curseg->segno) { in f2fs_do_replace_block()
3447 unsigned int segno; in read_compacted_summaries() local
3450 segno = le32_to_cpu(ckpt->cur_data_segno[i]); in read_compacted_summaries()
3452 seg_i->next_segno = segno; in read_compacted_summaries()
3490 unsigned int segno = 0; in read_normal_summaries() local
3496 segno = le32_to_cpu(ckpt->cur_data_segno[type]); in read_normal_summaries()
3504 segno = le32_to_cpu(ckpt->cur_node_segno[type - in read_normal_summaries()
3512 blk_addr = GET_SUM_BLOCK(sbi, segno); in read_normal_summaries()
3529 err = f2fs_restore_node_summary(sbi, segno, sum); in read_normal_summaries()
3546 curseg->next_segno = segno; in read_normal_summaries()
3705 unsigned int segno) in get_current_sit_page() argument
3707 return f2fs_get_meta_page_nofail(sbi, current_sit_addr(sbi, segno)); in get_current_sit_page()
3760 static void add_sit_entry(unsigned int segno, struct list_head *head) in add_sit_entry() argument
3763 unsigned int start_segno = START_SEGNO(segno); in add_sit_entry()
3785 unsigned int segno; in add_sits_in_set() local
3787 for_each_set_bit(segno, bitmap, MAIN_SEGS(sbi)) in add_sits_in_set()
3788 add_sit_entry(segno, set_list); in add_sits_in_set()
3799 unsigned int segno; in remove_sits_in_journal() local
3802 segno = le32_to_cpu(segno_in_journal(journal, i)); in remove_sits_in_journal()
3803 dirtied = __mark_sit_entry_dirty(sbi, segno); in remove_sits_in_journal()
3806 add_sit_entry(segno, &SM_I(sbi)->sit_entry_set); in remove_sits_in_journal()
3858 unsigned int segno = start_segno; in f2fs_flush_sit_entries() local
3872 for_each_set_bit_from(segno, bitmap, end) { in f2fs_flush_sit_entries()
3875 se = get_seg_entry(sbi, segno); in f2fs_flush_sit_entries()
3884 cpc->trim_start = segno; in f2fs_flush_sit_entries()
3890 SIT_JOURNAL, segno, 1); in f2fs_flush_sit_entries()
3893 cpu_to_le32(segno); in f2fs_flush_sit_entries()
3896 check_block_count(sbi, segno, in f2fs_flush_sit_entries()
3899 sit_offset = SIT_ENTRY_OFFSET(sit_i, segno); in f2fs_flush_sit_entries()
3902 check_block_count(sbi, segno, in f2fs_flush_sit_entries()
3906 __clear_bit(segno, bitmap); in f2fs_flush_sit_entries()
4098 array[i].segno = NULL_SEGNO; in build_curseg()
4233 __set_test_and_inuse(sbi, curseg_t->segno); in init_free_segmap()
4241 unsigned int segno = 0, offset = 0; in init_dirty_segmap() local
4246 segno = find_next_inuse(free_i, MAIN_SEGS(sbi), offset); in init_dirty_segmap()
4247 if (segno >= MAIN_SEGS(sbi)) in init_dirty_segmap()
4249 offset = segno + 1; in init_dirty_segmap()
4250 valid_blocks = get_valid_blocks(sbi, segno, false); in init_dirty_segmap()
4258 __locate_dirty_segment(sbi, segno, DIRTY); in init_dirty_segmap()
4311 struct seg_entry *se = get_seg_entry(sbi, curseg->segno); in sanity_check_curseg()
4326 i, curseg->segno, curseg->alloc_type, in sanity_check_curseg()
4340 unsigned int segno; in init_min_max_mtime() local
4346 for (segno = 0; segno < MAIN_SEGS(sbi); segno += sbi->segs_per_sec) { in init_min_max_mtime()
4351 mtime += get_seg_entry(sbi, segno + i)->mtime; in init_min_max_mtime()