Lines Matching refs:segno

388 static void __locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno,  in __locate_dirty_segment()  argument
394 if (IS_CURSEG(sbi, segno)) in __locate_dirty_segment()
397 if (!test_and_set_bit(segno, dirty_i->dirty_segmap[dirty_type])) in __locate_dirty_segment()
401 struct seg_entry *sentry = get_seg_entry(sbi, segno); in __locate_dirty_segment()
408 if (!test_and_set_bit(segno, dirty_i->dirty_segmap[t])) in __locate_dirty_segment()
413 static void __remove_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno, in __remove_dirty_segment() argument
418 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[dirty_type])) in __remove_dirty_segment()
422 struct seg_entry *sentry = get_seg_entry(sbi, segno); in __remove_dirty_segment()
425 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[t])) in __remove_dirty_segment()
428 if (get_valid_blocks(sbi, segno, sbi->segs_per_sec) == 0) in __remove_dirty_segment()
429 clear_bit(GET_SECNO(sbi, segno), in __remove_dirty_segment()
439 static void locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno) in locate_dirty_segment() argument
444 if (segno == NULL_SEGNO || IS_CURSEG(sbi, segno)) in locate_dirty_segment()
449 valid_blocks = get_valid_blocks(sbi, segno, 0); in locate_dirty_segment()
452 __locate_dirty_segment(sbi, segno, PRE); in locate_dirty_segment()
453 __remove_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
455 __locate_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
458 __remove_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
584 unsigned int segno; in set_prefree_as_free_segments() local
587 for_each_set_bit(segno, dirty_i->dirty_segmap[PRE], MAIN_SEGS(sbi)) in set_prefree_as_free_segments()
588 __set_test_and_free(sbi, segno); in set_prefree_as_free_segments()
632 static bool __mark_sit_entry_dirty(struct f2fs_sb_info *sbi, unsigned int segno) in __mark_sit_entry_dirty() argument
636 if (!__test_and_set_bit(segno, sit_i->dirty_sentries_bitmap)) { in __mark_sit_entry_dirty()
645 unsigned int segno, int modified) in __set_sit_entry_type() argument
647 struct seg_entry *se = get_seg_entry(sbi, segno); in __set_sit_entry_type()
650 __mark_sit_entry_dirty(sbi, segno); in __set_sit_entry_type()
656 unsigned int segno, offset; in update_sit_entry() local
659 segno = GET_SEGNO(sbi, blkaddr); in update_sit_entry()
661 se = get_seg_entry(sbi, segno); in update_sit_entry()
683 __mark_sit_entry_dirty(sbi, segno); in update_sit_entry()
689 get_sec_entry(sbi, segno)->valid_blocks += del; in update_sit_entry()
704 unsigned int segno = GET_SEGNO(sbi, addr); in invalidate_blocks() local
717 locate_dirty_segment(sbi, segno); in invalidate_blocks()
767 struct page *get_sum_page(struct f2fs_sb_info *sbi, unsigned int segno) in get_sum_page() argument
769 return get_meta_page(sbi, GET_SUM_BLOCK(sbi, segno)); in get_sum_page()
785 unsigned int segno = curseg->segno + 1; in is_next_segment_free() local
788 if (segno < MAIN_SEGS(sbi) && segno % sbi->segs_per_sec) in is_next_segment_free()
789 return !test_bit(segno, free_i->free_segmap); in is_next_segment_free()
801 unsigned int segno, secno, zoneno; in get_new_segment() local
813 segno = find_next_zero_bit(free_i->free_segmap, in get_new_segment()
815 if (segno - *newseg < sbi->segs_per_sec - in get_new_segment()
847 segno = secno * sbi->segs_per_sec; in get_new_segment()
880 f2fs_bug_on(sbi, test_bit(segno, free_i->free_segmap)); in get_new_segment()
881 __set_inuse(sbi, segno); in get_new_segment()
882 *newseg = segno; in get_new_segment()
891 curseg->segno = curseg->next_segno; in reset_curseg()
892 curseg->zone = GET_ZONENO_FROM_SEGNO(sbi, curseg->segno); in reset_curseg()
902 __set_sit_entry_type(sbi, type, curseg->segno, modified); in reset_curseg()
912 unsigned int segno = curseg->segno; in new_curseg() local
916 GET_SUM_BLOCK(sbi, segno)); in new_curseg()
923 get_new_segment(sbi, &segno, new_sec, dir); in new_curseg()
924 curseg->next_segno = segno; in new_curseg()
932 struct seg_entry *se = get_seg_entry(sbi, seg->segno); in __next_free_blkoff()
974 GET_SUM_BLOCK(sbi, curseg->segno)); in change_curseg()
1039 old_segno = curseg->segno; in __allocate_new_segments()
1267 unsigned int segno, old_cursegno; in recover_data_page() local
1271 segno = GET_SEGNO(sbi, new_blkaddr); in recover_data_page()
1272 se = get_seg_entry(sbi, segno); in recover_data_page()
1275 if (se->valid_blocks == 0 && !IS_CURSEG(sbi, segno)) { in recover_data_page()
1286 old_cursegno = curseg->segno; in recover_data_page()
1289 if (segno != curseg->segno) { in recover_data_page()
1290 curseg->next_segno = segno; in recover_data_page()
1367 unsigned int segno; in read_compacted_summaries() local
1370 segno = le32_to_cpu(ckpt->cur_data_segno[i]); in read_compacted_summaries()
1372 seg_i->next_segno = segno; in read_compacted_summaries()
1408 unsigned int segno = 0; in read_normal_summaries() local
1413 segno = le32_to_cpu(ckpt->cur_data_segno[type]); in read_normal_summaries()
1421 segno = le32_to_cpu(ckpt->cur_node_segno[type - in read_normal_summaries()
1429 blk_addr = GET_SUM_BLOCK(sbi, segno); in read_normal_summaries()
1446 err = restore_node_summary(sbi, segno, sum); in read_normal_summaries()
1458 curseg->next_segno = segno; in read_normal_summaries()
1608 unsigned int segno) in get_current_sit_page() argument
1610 return get_meta_page(sbi, current_sit_addr(sbi, segno)); in get_current_sit_page()
1672 static void add_sit_entry(unsigned int segno, struct list_head *head) in add_sit_entry() argument
1675 unsigned int start_segno = START_SEGNO(segno); in add_sit_entry()
1697 unsigned int segno; in add_sits_in_set() local
1699 for_each_set_bit(segno, bitmap, MAIN_SEGS(sbi)) in add_sits_in_set()
1700 add_sit_entry(segno, set_list); in add_sits_in_set()
1710 unsigned int segno; in remove_sits_in_journal() local
1713 segno = le32_to_cpu(segno_in_journal(sum, i)); in remove_sits_in_journal()
1714 dirtied = __mark_sit_entry_dirty(sbi, segno); in remove_sits_in_journal()
1717 add_sit_entry(segno, &SM_I(sbi)->sit_entry_set); in remove_sits_in_journal()
1768 unsigned int segno = start_segno; in flush_sit_entries() local
1780 for_each_set_bit_from(segno, bitmap, end) { in flush_sit_entries()
1783 se = get_seg_entry(sbi, segno); in flush_sit_entries()
1787 cpc->trim_start = segno; in flush_sit_entries()
1793 SIT_JOURNAL, segno, 1); in flush_sit_entries()
1796 cpu_to_le32(segno); in flush_sit_entries()
1800 sit_offset = SIT_ENTRY_OFFSET(sit_i, segno); in flush_sit_entries()
1805 __clear_bit(segno, bitmap); in flush_sit_entries()
1953 array[i].segno = NULL_SEGNO; in build_curseg()
2022 __set_test_and_inuse(sbi, curseg_t->segno); in init_free_segmap()
2030 unsigned int segno = 0, offset = 0; in init_dirty_segmap() local
2035 segno = find_next_inuse(free_i, MAIN_SEGS(sbi), offset); in init_dirty_segmap()
2036 if (segno >= MAIN_SEGS(sbi)) in init_dirty_segmap()
2038 offset = segno + 1; in init_dirty_segmap()
2039 valid_blocks = get_valid_blocks(sbi, segno, 0); in init_dirty_segmap()
2047 __locate_dirty_segment(sbi, segno, DIRTY); in init_dirty_segmap()
2094 unsigned int segno; in init_min_max_mtime() local
2100 for (segno = 0; segno < MAIN_SEGS(sbi); segno += sbi->segs_per_sec) { in init_min_max_mtime()
2105 mtime += get_seg_entry(sbi, segno + i)->mtime; in init_min_max_mtime()