Lines Matching refs:curseg
2744 struct curseg_info *curseg = CURSEG_I(sbi, type); in f2fs_curseg_valid_blocks() local
2748 return curseg->next_blkoff; in f2fs_curseg_valid_blocks()
2827 struct curseg_info *curseg = CURSEG_I(sbi, type); in write_current_sum_page() local
2829 struct f2fs_summary_block *src = curseg->sum_blk; in write_current_sum_page()
2835 mutex_lock(&curseg->curseg_mutex); in write_current_sum_page()
2837 down_read(&curseg->journal_rwsem); in write_current_sum_page()
2838 memcpy(sum_journal(sbi, dst), curseg->journal, sbi->sum_journal_size); in write_current_sum_page()
2839 up_read(&curseg->journal_rwsem); in write_current_sum_page()
2844 mutex_unlock(&curseg->curseg_mutex); in write_current_sum_page()
2851 struct curseg_info *curseg) in is_next_segment_free() argument
2853 unsigned int segno = curseg->segno + 1; in is_next_segment_free()
3022 struct curseg_info *curseg = CURSEG_I(sbi, type); in reset_curseg() local
3024 unsigned short seg_type = curseg->seg_type; in reset_curseg()
3027 if (curseg->next_segno == NULL_SEGNO) in reset_curseg()
3030 curseg->inited = true; in reset_curseg()
3031 curseg->segno = curseg->next_segno; in reset_curseg()
3032 curseg->zone = GET_ZONE_FROM_SEG(sbi, curseg->segno); in reset_curseg()
3033 curseg->next_blkoff = 0; in reset_curseg()
3034 curseg->next_segno = NULL_SEGNO; in reset_curseg()
3036 sum_footer = sum_footer(sbi, curseg->sum_blk); in reset_curseg()
3045 __set_sit_entry_type(sbi, seg_type, curseg->segno, modified); in reset_curseg()
3050 struct curseg_info *curseg = CURSEG_I(sbi, type); in __get_next_segno() local
3051 unsigned short seg_type = curseg->seg_type; in __get_next_segno()
3056 unsigned int hint = GET_SEC_FROM_SEG(sbi, curseg->segno); in __get_next_segno()
3058 if (GET_SEC_FROM_SEG(sbi, curseg->segno + 1) != hint) in __get_next_segno()
3059 return curseg->segno; in __get_next_segno()
3060 return get_random_u32_inclusive(curseg->segno + 1, in __get_next_segno()
3063 return curseg->segno; in __get_next_segno()
3069 if (!curseg->inited) in __get_next_segno()
3085 return curseg->segno; in __get_next_segno()
3088 static void reset_curseg_fields(struct curseg_info *curseg) in reset_curseg_fields() argument
3090 curseg->inited = false; in reset_curseg_fields()
3091 curseg->segno = NULL_SEGNO; in reset_curseg_fields()
3092 curseg->next_segno = 0; in reset_curseg_fields()
3101 struct curseg_info *curseg = CURSEG_I(sbi, type); in new_curseg() local
3102 unsigned int segno = curseg->segno; in new_curseg()
3106 if (curseg->inited) in new_curseg()
3107 write_sum_page(sbi, curseg->sum_blk, segno); in new_curseg()
3113 reset_curseg_fields(curseg); in new_curseg()
3117 curseg->next_segno = segno; in new_curseg()
3119 curseg->alloc_type = LFS; in new_curseg()
3121 curseg->fragment_remained_chunk = in new_curseg()
3160 struct curseg_info *curseg = CURSEG_I(sbi, type); in change_curseg() local
3161 unsigned int new_segno = curseg->next_segno; in change_curseg()
3165 if (curseg->inited) in change_curseg()
3166 write_sum_page(sbi, curseg->sum_blk, curseg->segno); in change_curseg()
3176 curseg->alloc_type = SSR; in change_curseg()
3177 curseg->next_blkoff = __next_free_blkoff(sbi, curseg->segno, 0); in change_curseg()
3182 memset(curseg->sum_blk, 0, sbi->sum_entry_size); in change_curseg()
3186 memcpy(curseg->sum_blk, sum_node, sbi->sum_entry_size); in change_curseg()
3198 struct curseg_info *curseg = CURSEG_I(sbi, type); in get_atssr_segment() local
3201 curseg->seg_type = target_type; in get_atssr_segment()
3204 struct seg_entry *se = get_seg_entry(sbi, curseg->next_segno); in get_atssr_segment()
3206 curseg->seg_type = se->type; in get_atssr_segment()
3210 curseg->seg_type = CURSEG_COLD_DATA; in get_atssr_segment()
3213 stat_inc_seg_type(sbi, curseg); in get_atssr_segment()
3219 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_ALL_DATA_ATGC); in __f2fs_init_atgc_curseg() local
3227 mutex_lock(&curseg->curseg_mutex); in __f2fs_init_atgc_curseg()
3234 mutex_unlock(&curseg->curseg_mutex); in __f2fs_init_atgc_curseg()
3267 struct curseg_info *curseg = CURSEG_I(sbi, type); in __f2fs_save_inmem_curseg() local
3269 mutex_lock(&curseg->curseg_mutex); in __f2fs_save_inmem_curseg()
3270 if (!curseg->inited) in __f2fs_save_inmem_curseg()
3273 if (get_valid_blocks(sbi, curseg->segno, false)) { in __f2fs_save_inmem_curseg()
3274 write_sum_page(sbi, curseg->sum_blk, curseg->segno); in __f2fs_save_inmem_curseg()
3277 __set_test_and_free(sbi, curseg->segno, true); in __f2fs_save_inmem_curseg()
3281 mutex_unlock(&curseg->curseg_mutex); in __f2fs_save_inmem_curseg()
3294 struct curseg_info *curseg = CURSEG_I(sbi, type); in __f2fs_restore_inmem_curseg() local
3296 mutex_lock(&curseg->curseg_mutex); in __f2fs_restore_inmem_curseg()
3297 if (!curseg->inited) in __f2fs_restore_inmem_curseg()
3299 if (get_valid_blocks(sbi, curseg->segno, false)) in __f2fs_restore_inmem_curseg()
3303 __set_test_and_inuse(sbi, curseg->segno); in __f2fs_restore_inmem_curseg()
3306 mutex_unlock(&curseg->curseg_mutex); in __f2fs_restore_inmem_curseg()
3320 struct curseg_info *curseg = CURSEG_I(sbi, type); in get_ssr_segment() local
3322 unsigned short seg_type = curseg->seg_type; in get_ssr_segment()
3331 curseg->next_segno = segno; in get_ssr_segment()
3359 curseg->next_segno = segno; in get_ssr_segment()
3368 curseg->next_segno = segno; in get_ssr_segment()
3377 struct curseg_info *curseg = CURSEG_I(sbi, type); in need_new_seg() local
3380 curseg->seg_type == CURSEG_WARM_NODE) in need_new_seg()
3382 if (curseg->alloc_type == LFS && is_next_segment_free(sbi, curseg) && in need_new_seg()
3393 struct curseg_info *curseg = CURSEG_I(sbi, type); in f2fs_allocate_segment_for_resize() local
3398 mutex_lock(&curseg->curseg_mutex); in f2fs_allocate_segment_for_resize()
3410 stat_inc_seg_type(sbi, curseg); in f2fs_allocate_segment_for_resize()
3416 if (segno != curseg->segno) in f2fs_allocate_segment_for_resize()
3418 type, segno, curseg->segno); in f2fs_allocate_segment_for_resize()
3420 mutex_unlock(&curseg->curseg_mutex); in f2fs_allocate_segment_for_resize()
3428 struct curseg_info *curseg = CURSEG_I(sbi, type); in __allocate_new_segment() local
3432 if (type == CURSEG_COLD_DATA_PINNED && !curseg->inited) in __allocate_new_segment()
3435 if (!force && curseg->inited && in __allocate_new_segment()
3436 !curseg->next_blkoff && in __allocate_new_segment()
3437 !get_valid_blocks(sbi, curseg->segno, new_sec) && in __allocate_new_segment()
3438 !get_ckpt_valid_blocks(sbi, curseg->segno, new_sec)) in __allocate_new_segment()
3442 old_segno = curseg->segno; in __allocate_new_segment()
3446 stat_inc_seg_type(sbi, curseg); in __allocate_new_segment()
3841 struct curseg_info *curseg = CURSEG_I(sbi, type); in f2fs_get_segment_temp() local
3844 switch (curseg->seg_type) { in f2fs_get_segment_temp()
3906 struct curseg_info *curseg = CURSEG_I(sbi, type); in f2fs_allocate_data_block() local
3915 mutex_lock(&curseg->curseg_mutex); in f2fs_allocate_data_block()
3918 if (curseg->segno == NULL_SEGNO) { in f2fs_allocate_data_block()
3929 *new_blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); in f2fs_allocate_data_block()
3931 f2fs_bug_on(sbi, curseg->next_blkoff >= BLKS_PER_SEG(sbi)); in f2fs_allocate_data_block()
3935 sum_entries(curseg->sum_blk)[curseg->next_blkoff] = *sum; in f2fs_allocate_data_block() local
3936 if (curseg->alloc_type == SSR) { in f2fs_allocate_data_block()
3937 curseg->next_blkoff = f2fs_find_next_ssr_block(sbi, curseg); in f2fs_allocate_data_block()
3939 curseg->next_blkoff++; in f2fs_allocate_data_block()
3941 f2fs_randomize_chunk(sbi, curseg); in f2fs_allocate_data_block()
3943 if (curseg->next_blkoff >= f2fs_usable_blks_in_seg(sbi, curseg->segno)) in f2fs_allocate_data_block()
3945 stat_inc_block_count(sbi, curseg); in f2fs_allocate_data_block()
3968 !((curseg->segno + 1) % sbi->segs_per_sec)) { in f2fs_allocate_data_block()
3969 write_sum_page(sbi, curseg->sum_blk, curseg->segno); in f2fs_allocate_data_block()
3970 reset_curseg_fields(curseg); in f2fs_allocate_data_block()
3982 stat_inc_seg_type(sbi, curseg); in f2fs_allocate_data_block()
3998 if (IS_DATASEG(curseg->seg_type)) { in f2fs_allocate_data_block()
4008 if (folio && IS_NODESEG(curseg->seg_type)) { in f2fs_allocate_data_block()
4009 fill_node_footer_blkaddr(folio, NEXT_FREE_BLKADDR(sbi, curseg)); in f2fs_allocate_data_block()
4025 mutex_unlock(&curseg->curseg_mutex); in f2fs_allocate_data_block()
4032 mutex_unlock(&curseg->curseg_mutex); in f2fs_allocate_data_block()
4253 struct curseg_info *curseg; in f2fs_do_replace_block() local
4284 curseg = CURSEG_I(sbi, type); in f2fs_do_replace_block()
4285 f2fs_bug_on(sbi, !IS_DATASEG(curseg->seg_type)); in f2fs_do_replace_block()
4287 mutex_lock(&curseg->curseg_mutex); in f2fs_do_replace_block()
4290 old_cursegno = curseg->segno; in f2fs_do_replace_block()
4291 old_blkoff = curseg->next_blkoff; in f2fs_do_replace_block()
4292 old_alloc_type = curseg->alloc_type; in f2fs_do_replace_block()
4295 if (segno != curseg->segno) { in f2fs_do_replace_block()
4296 curseg->next_segno = segno; in f2fs_do_replace_block()
4301 curseg->next_blkoff = GET_BLKOFF_FROM_SEG0(sbi, new_blkaddr); in f2fs_do_replace_block()
4302 sum_entries(curseg->sum_blk)[curseg->next_blkoff] = *sum; in f2fs_do_replace_block() local
4322 if (old_cursegno != curseg->segno) { in f2fs_do_replace_block()
4323 curseg->next_segno = old_cursegno; in f2fs_do_replace_block()
4327 curseg->next_blkoff = old_blkoff; in f2fs_do_replace_block()
4328 curseg->alloc_type = old_alloc_type; in f2fs_do_replace_block()
4333 mutex_unlock(&curseg->curseg_mutex); in f2fs_do_replace_block()
4472 struct curseg_info *curseg; in read_normal_summaries() local
4522 curseg = CURSEG_I(sbi, type); in read_normal_summaries()
4523 mutex_lock(&curseg->curseg_mutex); in read_normal_summaries()
4526 down_write(&curseg->journal_rwsem); in read_normal_summaries()
4527 memcpy(curseg->journal, sum_journal(sbi, sum), sbi->sum_journal_size); in read_normal_summaries()
4528 up_write(&curseg->journal_rwsem); in read_normal_summaries()
4530 memcpy(sum_entries(curseg->sum_blk), sum_entries(sum), in read_normal_summaries()
4532 memcpy(sum_footer(sbi, curseg->sum_blk), sum_footer(sbi, sum), in read_normal_summaries()
4534 curseg->next_segno = segno; in read_normal_summaries()
4536 curseg->alloc_type = ckpt->alloc_type[type]; in read_normal_summaries()
4537 curseg->next_blkoff = blk_off; in read_normal_summaries()
4538 mutex_unlock(&curseg->curseg_mutex); in read_normal_summaries()
4781 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); in remove_sits_in_journal() local
4782 struct f2fs_journal *journal = curseg->journal; in remove_sits_in_journal()
4785 down_write(&curseg->journal_rwsem); in remove_sits_in_journal()
4797 up_write(&curseg->journal_rwsem); in remove_sits_in_journal()
4808 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); in f2fs_flush_sit_entries() local
4809 struct f2fs_journal *journal = curseg->journal; in f2fs_flush_sit_entries()
4854 down_write(&curseg->journal_rwsem); in f2fs_flush_sit_entries()
4900 up_write(&curseg->journal_rwsem); in f2fs_flush_sit_entries()
5082 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); in build_sit_entries() local
5083 struct f2fs_journal *journal = curseg->journal; in build_sit_entries()
5147 down_read(&curseg->journal_rwsem); in build_sit_entries()
5200 up_read(&curseg->journal_rwsem); in build_sit_entries()
5362 struct curseg_info *curseg = CURSEG_I(sbi, i); in sanity_check_curseg() local
5363 struct seg_entry *se = get_seg_entry(sbi, curseg->segno); in sanity_check_curseg()
5364 unsigned int blkofs = curseg->next_blkoff; in sanity_check_curseg()
5370 sanity_check_seg_type(sbi, curseg->seg_type); in sanity_check_curseg()
5372 if (curseg->alloc_type != LFS && curseg->alloc_type != SSR) { in sanity_check_curseg()
5375 curseg->alloc_type); in sanity_check_curseg()
5383 if (curseg->alloc_type == SSR) in sanity_check_curseg()
5392 i, curseg->segno, curseg->alloc_type, in sanity_check_curseg()
5393 curseg->next_blkoff, blkofs); in sanity_check_curseg()