Lines Matching refs:curseg

2644 	struct curseg_info *curseg = CURSEG_I(sbi, type);  in f2fs_curseg_valid_blocks()  local
2648 return curseg->next_blkoff; in f2fs_curseg_valid_blocks()
2706 struct curseg_info *curseg = CURSEG_I(sbi, type); in write_current_sum_page() local
2708 struct f2fs_summary_block *src = curseg->sum_blk; in write_current_sum_page()
2714 mutex_lock(&curseg->curseg_mutex); in write_current_sum_page()
2716 down_read(&curseg->journal_rwsem); in write_current_sum_page()
2717 memcpy(&dst->journal, curseg->journal, SUM_JOURNAL_SIZE); in write_current_sum_page()
2718 up_read(&curseg->journal_rwsem); in write_current_sum_page()
2723 mutex_unlock(&curseg->curseg_mutex); in write_current_sum_page()
2730 struct curseg_info *curseg) in is_next_segment_free() argument
2732 unsigned int segno = curseg->segno + 1; in is_next_segment_free()
2859 struct curseg_info *curseg = CURSEG_I(sbi, type); in reset_curseg() local
2861 unsigned short seg_type = curseg->seg_type; in reset_curseg()
2864 if (curseg->next_segno == NULL_SEGNO) in reset_curseg()
2867 curseg->inited = true; in reset_curseg()
2868 curseg->segno = curseg->next_segno; in reset_curseg()
2869 curseg->zone = GET_ZONE_FROM_SEG(sbi, curseg->segno); in reset_curseg()
2870 curseg->next_blkoff = 0; in reset_curseg()
2871 curseg->next_segno = NULL_SEGNO; in reset_curseg()
2873 sum_footer = &(curseg->sum_blk->footer); in reset_curseg()
2882 __set_sit_entry_type(sbi, seg_type, curseg->segno, modified); in reset_curseg()
2887 struct curseg_info *curseg = CURSEG_I(sbi, type); in __get_next_segno() local
2888 unsigned short seg_type = curseg->seg_type; in __get_next_segno()
2893 unsigned int hint = GET_SEC_FROM_SEG(sbi, curseg->segno); in __get_next_segno()
2895 if (GET_SEC_FROM_SEG(sbi, curseg->segno + 1) != hint) in __get_next_segno()
2896 return curseg->segno; in __get_next_segno()
2897 return get_random_u32_inclusive(curseg->segno + 1, in __get_next_segno()
2900 return curseg->segno; in __get_next_segno()
2906 if (!curseg->inited) in __get_next_segno()
2922 return curseg->segno; in __get_next_segno()
2925 static void reset_curseg_fields(struct curseg_info *curseg) in reset_curseg_fields() argument
2927 curseg->inited = false; in reset_curseg_fields()
2928 curseg->segno = NULL_SEGNO; in reset_curseg_fields()
2929 curseg->next_segno = 0; in reset_curseg_fields()
2938 struct curseg_info *curseg = CURSEG_I(sbi, type); in new_curseg() local
2939 unsigned int segno = curseg->segno; in new_curseg()
2943 if (curseg->inited) in new_curseg()
2944 write_sum_page(sbi, curseg->sum_blk, GET_SUM_BLOCK(sbi, segno)); in new_curseg()
2950 reset_curseg_fields(curseg); in new_curseg()
2954 curseg->next_segno = segno; in new_curseg()
2956 curseg->alloc_type = LFS; in new_curseg()
2958 curseg->fragment_remained_chunk = in new_curseg()
2997 struct curseg_info *curseg = CURSEG_I(sbi, type); in change_curseg() local
2998 unsigned int new_segno = curseg->next_segno; in change_curseg()
3002 if (curseg->inited) in change_curseg()
3003 write_sum_page(sbi, curseg->sum_blk, GET_SUM_BLOCK(sbi, curseg->segno)); in change_curseg()
3013 curseg->alloc_type = SSR; in change_curseg()
3014 curseg->next_blkoff = __next_free_blkoff(sbi, curseg->segno, 0); in change_curseg()
3019 memset(curseg->sum_blk, 0, SUM_ENTRY_SIZE); in change_curseg()
3023 memcpy(curseg->sum_blk, sum_node, SUM_ENTRY_SIZE); in change_curseg()
3035 struct curseg_info *curseg = CURSEG_I(sbi, type); in get_atssr_segment() local
3038 curseg->seg_type = target_type; in get_atssr_segment()
3041 struct seg_entry *se = get_seg_entry(sbi, curseg->next_segno); in get_atssr_segment()
3043 curseg->seg_type = se->type; in get_atssr_segment()
3047 curseg->seg_type = CURSEG_COLD_DATA; in get_atssr_segment()
3050 stat_inc_seg_type(sbi, curseg); in get_atssr_segment()
3056 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_ALL_DATA_ATGC); in __f2fs_init_atgc_curseg() local
3064 mutex_lock(&curseg->curseg_mutex); in __f2fs_init_atgc_curseg()
3071 mutex_unlock(&curseg->curseg_mutex); in __f2fs_init_atgc_curseg()
3104 struct curseg_info *curseg = CURSEG_I(sbi, type); in __f2fs_save_inmem_curseg() local
3106 mutex_lock(&curseg->curseg_mutex); in __f2fs_save_inmem_curseg()
3107 if (!curseg->inited) in __f2fs_save_inmem_curseg()
3110 if (get_valid_blocks(sbi, curseg->segno, false)) { in __f2fs_save_inmem_curseg()
3111 write_sum_page(sbi, curseg->sum_blk, in __f2fs_save_inmem_curseg()
3112 GET_SUM_BLOCK(sbi, curseg->segno)); in __f2fs_save_inmem_curseg()
3115 __set_test_and_free(sbi, curseg->segno, true); in __f2fs_save_inmem_curseg()
3119 mutex_unlock(&curseg->curseg_mutex); in __f2fs_save_inmem_curseg()
3132 struct curseg_info *curseg = CURSEG_I(sbi, type); in __f2fs_restore_inmem_curseg() local
3134 mutex_lock(&curseg->curseg_mutex); in __f2fs_restore_inmem_curseg()
3135 if (!curseg->inited) in __f2fs_restore_inmem_curseg()
3137 if (get_valid_blocks(sbi, curseg->segno, false)) in __f2fs_restore_inmem_curseg()
3141 __set_test_and_inuse(sbi, curseg->segno); in __f2fs_restore_inmem_curseg()
3144 mutex_unlock(&curseg->curseg_mutex); in __f2fs_restore_inmem_curseg()
3158 struct curseg_info *curseg = CURSEG_I(sbi, type); in get_ssr_segment() local
3160 unsigned short seg_type = curseg->seg_type; in get_ssr_segment()
3169 curseg->next_segno = segno; in get_ssr_segment()
3197 curseg->next_segno = segno; in get_ssr_segment()
3206 curseg->next_segno = segno; in get_ssr_segment()
3215 struct curseg_info *curseg = CURSEG_I(sbi, type); in need_new_seg() local
3218 curseg->seg_type == CURSEG_WARM_NODE) in need_new_seg()
3220 if (curseg->alloc_type == LFS && is_next_segment_free(sbi, curseg) && in need_new_seg()
3231 struct curseg_info *curseg = CURSEG_I(sbi, type); in f2fs_allocate_segment_for_resize() local
3236 mutex_lock(&curseg->curseg_mutex); in f2fs_allocate_segment_for_resize()
3248 stat_inc_seg_type(sbi, curseg); in f2fs_allocate_segment_for_resize()
3254 if (segno != curseg->segno) in f2fs_allocate_segment_for_resize()
3256 type, segno, curseg->segno); in f2fs_allocate_segment_for_resize()
3258 mutex_unlock(&curseg->curseg_mutex); in f2fs_allocate_segment_for_resize()
3266 struct curseg_info *curseg = CURSEG_I(sbi, type); in __allocate_new_segment() local
3270 if (type == CURSEG_COLD_DATA_PINNED && !curseg->inited) in __allocate_new_segment()
3273 if (!force && curseg->inited && in __allocate_new_segment()
3274 !curseg->next_blkoff && in __allocate_new_segment()
3275 !get_valid_blocks(sbi, curseg->segno, new_sec) && in __allocate_new_segment()
3276 !get_ckpt_valid_blocks(sbi, curseg->segno, new_sec)) in __allocate_new_segment()
3280 old_segno = curseg->segno; in __allocate_new_segment()
3284 stat_inc_seg_type(sbi, curseg); in __allocate_new_segment()
3662 struct curseg_info *curseg = CURSEG_I(sbi, type); in f2fs_get_segment_temp() local
3665 switch (curseg->seg_type) { in f2fs_get_segment_temp()
3727 struct curseg_info *curseg = CURSEG_I(sbi, type); in f2fs_allocate_data_block() local
3736 mutex_lock(&curseg->curseg_mutex); in f2fs_allocate_data_block()
3739 if (curseg->segno == NULL_SEGNO) { in f2fs_allocate_data_block()
3750 *new_blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); in f2fs_allocate_data_block()
3752 f2fs_bug_on(sbi, curseg->next_blkoff >= BLKS_PER_SEG(sbi)); in f2fs_allocate_data_block()
3756 curseg->sum_blk->entries[curseg->next_blkoff] = *sum; in f2fs_allocate_data_block()
3757 if (curseg->alloc_type == SSR) { in f2fs_allocate_data_block()
3758 curseg->next_blkoff = f2fs_find_next_ssr_block(sbi, curseg); in f2fs_allocate_data_block()
3760 curseg->next_blkoff++; in f2fs_allocate_data_block()
3762 f2fs_randomize_chunk(sbi, curseg); in f2fs_allocate_data_block()
3764 if (curseg->next_blkoff >= f2fs_usable_blks_in_seg(sbi, curseg->segno)) in f2fs_allocate_data_block()
3766 stat_inc_block_count(sbi, curseg); in f2fs_allocate_data_block()
3789 !((curseg->segno + 1) % sbi->segs_per_sec)) { in f2fs_allocate_data_block()
3790 write_sum_page(sbi, curseg->sum_blk, in f2fs_allocate_data_block()
3791 GET_SUM_BLOCK(sbi, curseg->segno)); in f2fs_allocate_data_block()
3792 reset_curseg_fields(curseg); in f2fs_allocate_data_block()
3804 stat_inc_seg_type(sbi, curseg); in f2fs_allocate_data_block()
3820 if (IS_DATASEG(curseg->seg_type)) in f2fs_allocate_data_block()
3825 if (page && IS_NODESEG(curseg->seg_type)) { in f2fs_allocate_data_block()
3826 fill_node_footer_blkaddr(page, NEXT_FREE_BLKADDR(sbi, curseg)); in f2fs_allocate_data_block()
3842 mutex_unlock(&curseg->curseg_mutex); in f2fs_allocate_data_block()
3849 mutex_unlock(&curseg->curseg_mutex); in f2fs_allocate_data_block()
4060 struct curseg_info *curseg; in f2fs_do_replace_block() local
4091 curseg = CURSEG_I(sbi, type); in f2fs_do_replace_block()
4092 f2fs_bug_on(sbi, !IS_DATASEG(curseg->seg_type)); in f2fs_do_replace_block()
4094 mutex_lock(&curseg->curseg_mutex); in f2fs_do_replace_block()
4097 old_cursegno = curseg->segno; in f2fs_do_replace_block()
4098 old_blkoff = curseg->next_blkoff; in f2fs_do_replace_block()
4099 old_alloc_type = curseg->alloc_type; in f2fs_do_replace_block()
4102 if (segno != curseg->segno) { in f2fs_do_replace_block()
4103 curseg->next_segno = segno; in f2fs_do_replace_block()
4108 curseg->next_blkoff = GET_BLKOFF_FROM_SEG0(sbi, new_blkaddr); in f2fs_do_replace_block()
4109 curseg->sum_blk->entries[curseg->next_blkoff] = *sum; in f2fs_do_replace_block()
4129 if (old_cursegno != curseg->segno) { in f2fs_do_replace_block()
4130 curseg->next_segno = old_cursegno; in f2fs_do_replace_block()
4134 curseg->next_blkoff = old_blkoff; in f2fs_do_replace_block()
4135 curseg->alloc_type = old_alloc_type; in f2fs_do_replace_block()
4140 mutex_unlock(&curseg->curseg_mutex); in f2fs_do_replace_block()
4280 struct curseg_info *curseg; in read_normal_summaries() local
4330 curseg = CURSEG_I(sbi, type); in read_normal_summaries()
4331 mutex_lock(&curseg->curseg_mutex); in read_normal_summaries()
4334 down_write(&curseg->journal_rwsem); in read_normal_summaries()
4335 memcpy(curseg->journal, &sum->journal, SUM_JOURNAL_SIZE); in read_normal_summaries()
4336 up_write(&curseg->journal_rwsem); in read_normal_summaries()
4338 memcpy(curseg->sum_blk->entries, sum->entries, SUM_ENTRY_SIZE); in read_normal_summaries()
4339 memcpy(&curseg->sum_blk->footer, &sum->footer, SUM_FOOTER_SIZE); in read_normal_summaries()
4340 curseg->next_segno = segno; in read_normal_summaries()
4342 curseg->alloc_type = ckpt->alloc_type[type]; in read_normal_summaries()
4343 curseg->next_blkoff = blk_off; in read_normal_summaries()
4344 mutex_unlock(&curseg->curseg_mutex); in read_normal_summaries()
4586 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); in remove_sits_in_journal() local
4587 struct f2fs_journal *journal = curseg->journal; in remove_sits_in_journal()
4590 down_write(&curseg->journal_rwsem); in remove_sits_in_journal()
4602 up_write(&curseg->journal_rwsem); in remove_sits_in_journal()
4613 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); in f2fs_flush_sit_entries() local
4614 struct f2fs_journal *journal = curseg->journal; in f2fs_flush_sit_entries()
4658 down_write(&curseg->journal_rwsem); in f2fs_flush_sit_entries()
4705 up_write(&curseg->journal_rwsem); in f2fs_flush_sit_entries()
4900 struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); in build_sit_entries() local
4901 struct f2fs_journal *journal = curseg->journal; in build_sit_entries()
4965 down_read(&curseg->journal_rwsem); in build_sit_entries()
5018 up_read(&curseg->journal_rwsem); in build_sit_entries()
5172 struct curseg_info *curseg = CURSEG_I(sbi, i); in sanity_check_curseg() local
5173 struct seg_entry *se = get_seg_entry(sbi, curseg->segno); in sanity_check_curseg()
5174 unsigned int blkofs = curseg->next_blkoff; in sanity_check_curseg()
5180 sanity_check_seg_type(sbi, curseg->seg_type); in sanity_check_curseg()
5182 if (curseg->alloc_type != LFS && curseg->alloc_type != SSR) { in sanity_check_curseg()
5185 curseg->alloc_type); in sanity_check_curseg()
5193 if (curseg->alloc_type == SSR) in sanity_check_curseg()
5202 i, curseg->segno, curseg->alloc_type, in sanity_check_curseg()
5203 curseg->next_blkoff, blkofs); in sanity_check_curseg()