Lines Matching refs:segno
420 static void __locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno, in __locate_dirty_segment() argument
426 if (IS_CURSEG(sbi, segno)) in __locate_dirty_segment()
429 if (!test_and_set_bit(segno, dirty_i->dirty_segmap[dirty_type])) in __locate_dirty_segment()
433 struct seg_entry *sentry = get_seg_entry(sbi, segno); in __locate_dirty_segment()
440 if (!test_and_set_bit(segno, dirty_i->dirty_segmap[t])) in __locate_dirty_segment()
445 static void __remove_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno, in __remove_dirty_segment() argument
450 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[dirty_type])) in __remove_dirty_segment()
454 struct seg_entry *sentry = get_seg_entry(sbi, segno); in __remove_dirty_segment()
457 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[t])) in __remove_dirty_segment()
460 if (get_valid_blocks(sbi, segno, sbi->segs_per_sec) == 0) in __remove_dirty_segment()
461 clear_bit(GET_SECNO(sbi, segno), in __remove_dirty_segment()
471 static void locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno) in locate_dirty_segment() argument
476 if (segno == NULL_SEGNO || IS_CURSEG(sbi, segno)) in locate_dirty_segment()
481 valid_blocks = get_valid_blocks(sbi, segno, 0); in locate_dirty_segment()
484 __locate_dirty_segment(sbi, segno, PRE); in locate_dirty_segment()
485 __remove_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
487 __locate_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
490 __remove_dirty_segment(sbi, segno, DIRTY); in locate_dirty_segment()
618 unsigned int segno; in set_prefree_as_free_segments() local
621 for_each_set_bit(segno, dirty_i->dirty_segmap[PRE], MAIN_SEGS(sbi)) in set_prefree_as_free_segments()
622 __set_test_and_free(sbi, segno); in set_prefree_as_free_segments()
670 static bool __mark_sit_entry_dirty(struct f2fs_sb_info *sbi, unsigned int segno) in __mark_sit_entry_dirty() argument
674 if (!__test_and_set_bit(segno, sit_i->dirty_sentries_bitmap)) { in __mark_sit_entry_dirty()
683 unsigned int segno, int modified) in __set_sit_entry_type() argument
685 struct seg_entry *se = get_seg_entry(sbi, segno); in __set_sit_entry_type()
688 __mark_sit_entry_dirty(sbi, segno); in __set_sit_entry_type()
694 unsigned int segno, offset; in update_sit_entry() local
697 segno = GET_SEGNO(sbi, blkaddr); in update_sit_entry()
699 se = get_seg_entry(sbi, segno); in update_sit_entry()
725 __mark_sit_entry_dirty(sbi, segno); in update_sit_entry()
731 get_sec_entry(sbi, segno)->valid_blocks += del; in update_sit_entry()
746 unsigned int segno = GET_SEGNO(sbi, addr); in invalidate_blocks() local
759 locate_dirty_segment(sbi, segno); in invalidate_blocks()
767 unsigned int segno, offset; in is_checkpointed_data() local
776 segno = GET_SEGNO(sbi, blkaddr); in is_checkpointed_data()
777 se = get_seg_entry(sbi, segno); in is_checkpointed_data()
833 struct page *get_sum_page(struct f2fs_sb_info *sbi, unsigned int segno) in get_sum_page() argument
835 return get_meta_page(sbi, GET_SUM_BLOCK(sbi, segno)); in get_sum_page()
860 unsigned int segno = curseg->segno + 1; in is_next_segment_free() local
863 if (segno < MAIN_SEGS(sbi) && segno % sbi->segs_per_sec) in is_next_segment_free()
864 return !test_bit(segno, free_i->free_segmap); in is_next_segment_free()
876 unsigned int segno, secno, zoneno; in get_new_segment() local
888 segno = find_next_zero_bit(free_i->free_segmap, in get_new_segment()
890 if (segno - *newseg < sbi->segs_per_sec - in get_new_segment()
922 segno = secno * sbi->segs_per_sec; in get_new_segment()
955 f2fs_bug_on(sbi, test_bit(segno, free_i->free_segmap)); in get_new_segment()
956 __set_inuse(sbi, segno); in get_new_segment()
957 *newseg = segno; in get_new_segment()
966 curseg->segno = curseg->next_segno; in reset_curseg()
967 curseg->zone = GET_ZONENO_FROM_SEGNO(sbi, curseg->segno); in reset_curseg()
977 __set_sit_entry_type(sbi, type, curseg->segno, modified); in reset_curseg()
987 unsigned int segno = curseg->segno; in new_curseg() local
991 GET_SUM_BLOCK(sbi, segno)); in new_curseg()
998 get_new_segment(sbi, &segno, new_sec, dir); in new_curseg()
999 curseg->next_segno = segno; in new_curseg()
1007 struct seg_entry *se = get_seg_entry(sbi, seg->segno); in __next_free_blkoff()
1049 GET_SUM_BLOCK(sbi, curseg->segno)); in change_curseg()
1114 old_segno = curseg->segno; in __allocate_new_segments()
1354 unsigned int segno, old_cursegno; in __f2fs_replace_block() local
1359 segno = GET_SEGNO(sbi, new_blkaddr); in __f2fs_replace_block()
1360 se = get_seg_entry(sbi, segno); in __f2fs_replace_block()
1365 if (se->valid_blocks == 0 && !IS_CURSEG(sbi, segno)) { in __f2fs_replace_block()
1372 if (!IS_CURSEG(sbi, segno)) in __f2fs_replace_block()
1381 old_cursegno = curseg->segno; in __f2fs_replace_block()
1385 if (segno != curseg->segno) { in __f2fs_replace_block()
1386 curseg->next_segno = segno; in __f2fs_replace_block()
1404 if (old_cursegno != curseg->segno) { in __f2fs_replace_block()
1524 unsigned int segno; in read_compacted_summaries() local
1527 segno = le32_to_cpu(ckpt->cur_data_segno[i]); in read_compacted_summaries()
1529 seg_i->next_segno = segno; in read_compacted_summaries()
1565 unsigned int segno = 0; in read_normal_summaries() local
1570 segno = le32_to_cpu(ckpt->cur_data_segno[type]); in read_normal_summaries()
1578 segno = le32_to_cpu(ckpt->cur_node_segno[type - in read_normal_summaries()
1586 blk_addr = GET_SUM_BLOCK(sbi, segno); in read_normal_summaries()
1603 err = restore_node_summary(sbi, segno, sum); in read_normal_summaries()
1615 curseg->next_segno = segno; in read_normal_summaries()
1765 unsigned int segno) in get_current_sit_page() argument
1767 return get_meta_page(sbi, current_sit_addr(sbi, segno)); in get_current_sit_page()
1829 static void add_sit_entry(unsigned int segno, struct list_head *head) in add_sit_entry() argument
1832 unsigned int start_segno = START_SEGNO(segno); in add_sit_entry()
1854 unsigned int segno; in add_sits_in_set() local
1856 for_each_set_bit(segno, bitmap, MAIN_SEGS(sbi)) in add_sits_in_set()
1857 add_sit_entry(segno, set_list); in add_sits_in_set()
1867 unsigned int segno; in remove_sits_in_journal() local
1870 segno = le32_to_cpu(segno_in_journal(sum, i)); in remove_sits_in_journal()
1871 dirtied = __mark_sit_entry_dirty(sbi, segno); in remove_sits_in_journal()
1874 add_sit_entry(segno, &SM_I(sbi)->sit_entry_set); in remove_sits_in_journal()
1925 unsigned int segno = start_segno; in flush_sit_entries() local
1937 for_each_set_bit_from(segno, bitmap, end) { in flush_sit_entries()
1940 se = get_seg_entry(sbi, segno); in flush_sit_entries()
1944 cpc->trim_start = segno; in flush_sit_entries()
1950 SIT_JOURNAL, segno, 1); in flush_sit_entries()
1953 cpu_to_le32(segno); in flush_sit_entries()
1957 sit_offset = SIT_ENTRY_OFFSET(sit_i, segno); in flush_sit_entries()
1962 __clear_bit(segno, bitmap); in flush_sit_entries()
2114 array[i].segno = NULL_SEGNO; in build_curseg()
2188 __set_test_and_inuse(sbi, curseg_t->segno); in init_free_segmap()
2196 unsigned int segno = 0, offset = 0; in init_dirty_segmap() local
2201 segno = find_next_inuse(free_i, MAIN_SEGS(sbi), offset); in init_dirty_segmap()
2202 if (segno >= MAIN_SEGS(sbi)) in init_dirty_segmap()
2204 offset = segno + 1; in init_dirty_segmap()
2205 valid_blocks = get_valid_blocks(sbi, segno, 0); in init_dirty_segmap()
2213 __locate_dirty_segment(sbi, segno, DIRTY); in init_dirty_segmap()
2260 unsigned int segno; in init_min_max_mtime() local
2266 for (segno = 0; segno < MAIN_SEGS(sbi); segno += sbi->segs_per_sec) { in init_min_max_mtime()
2271 mtime += get_seg_entry(sbi, segno + i)->mtime; in init_min_max_mtime()