Lines Matching refs:fio
368 struct f2fs_io_info fio = { in __f2fs_commit_inmem_pages() local
396 fio.page = page; in __f2fs_commit_inmem_pages()
397 fio.old_blkaddr = NULL_ADDR; in __f2fs_commit_inmem_pages()
398 fio.encrypted_page = NULL; in __f2fs_commit_inmem_pages()
399 fio.need_lock = LOCK_DONE; in __f2fs_commit_inmem_pages()
400 err = f2fs_do_write_data_page(&fio); in __f2fs_commit_inmem_pages()
411 cur->old_addr = fio.old_blkaddr; in __f2fs_commit_inmem_pages()
2807 static int __get_segment_type_2(struct f2fs_io_info *fio) in __get_segment_type_2() argument
2809 if (fio->type == DATA) in __get_segment_type_2()
2815 static int __get_segment_type_4(struct f2fs_io_info *fio) in __get_segment_type_4() argument
2817 if (fio->type == DATA) { in __get_segment_type_4()
2818 struct inode *inode = fio->page->mapping->host; in __get_segment_type_4()
2825 if (IS_DNODE(fio->page) && is_cold_node(fio->page)) in __get_segment_type_4()
2832 static int __get_segment_type_6(struct f2fs_io_info *fio) in __get_segment_type_6() argument
2834 if (fio->type == DATA) { in __get_segment_type_6()
2835 struct inode *inode = fio->page->mapping->host; in __get_segment_type_6()
2837 if (is_cold_data(fio->page) || file_is_cold(inode)) in __get_segment_type_6()
2846 if (IS_DNODE(fio->page)) in __get_segment_type_6()
2847 return is_cold_node(fio->page) ? CURSEG_WARM_NODE : in __get_segment_type_6()
2853 static int __get_segment_type(struct f2fs_io_info *fio) in __get_segment_type() argument
2857 switch (F2FS_OPTION(fio->sbi).active_logs) { in __get_segment_type()
2859 type = __get_segment_type_2(fio); in __get_segment_type()
2862 type = __get_segment_type_4(fio); in __get_segment_type()
2865 type = __get_segment_type_6(fio); in __get_segment_type()
2868 f2fs_bug_on(fio->sbi, true); in __get_segment_type()
2872 fio->temp = HOT; in __get_segment_type()
2874 fio->temp = WARM; in __get_segment_type()
2876 fio->temp = COLD; in __get_segment_type()
2883 struct f2fs_io_info *fio, bool add_list) in f2fs_allocate_data_block() argument
2938 INIT_LIST_HEAD(&fio->list); in f2fs_allocate_data_block()
2939 fio->in_list = true; in f2fs_allocate_data_block()
2940 fio->retry = false; in f2fs_allocate_data_block()
2941 io = sbi->write_io[fio->type] + fio->temp; in f2fs_allocate_data_block()
2943 list_add_tail(&fio->list, &io->io_list); in f2fs_allocate_data_block()
2952 static void update_device_state(struct f2fs_io_info *fio) in update_device_state() argument
2954 struct f2fs_sb_info *sbi = fio->sbi; in update_device_state()
2960 devidx = f2fs_target_device_index(sbi, fio->new_blkaddr); in update_device_state()
2963 f2fs_set_dirty_device(sbi, fio->ino, devidx, FLUSH_INO); in update_device_state()
2973 static void do_write_page(struct f2fs_summary *sum, struct f2fs_io_info *fio) in do_write_page() argument
2975 int type = __get_segment_type(fio); in do_write_page()
2976 bool keep_order = (test_opt(fio->sbi, LFS) && type == CURSEG_COLD_DATA); in do_write_page()
2979 down_read(&fio->sbi->io_order_lock); in do_write_page()
2981 f2fs_allocate_data_block(fio->sbi, fio->page, fio->old_blkaddr, in do_write_page()
2982 &fio->new_blkaddr, sum, type, fio, true); in do_write_page()
2983 if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO) in do_write_page()
2984 invalidate_mapping_pages(META_MAPPING(fio->sbi), in do_write_page()
2985 fio->old_blkaddr, fio->old_blkaddr); in do_write_page()
2988 f2fs_submit_page_write(fio); in do_write_page()
2989 if (fio->retry) { in do_write_page()
2990 fio->old_blkaddr = fio->new_blkaddr; in do_write_page()
2994 update_device_state(fio); in do_write_page()
2997 up_read(&fio->sbi->io_order_lock); in do_write_page()
3003 struct f2fs_io_info fio = { in f2fs_do_write_meta_page() local
3017 fio.op_flags &= ~REQ_META; in f2fs_do_write_meta_page()
3021 f2fs_submit_page_write(&fio); in f2fs_do_write_meta_page()
3026 void f2fs_do_write_node_page(unsigned int nid, struct f2fs_io_info *fio) in f2fs_do_write_node_page() argument
3031 do_write_page(&sum, fio); in f2fs_do_write_node_page()
3033 f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE); in f2fs_do_write_node_page()
3037 struct f2fs_io_info *fio) in f2fs_outplace_write_data() argument
3039 struct f2fs_sb_info *sbi = fio->sbi; in f2fs_outplace_write_data()
3043 set_summary(&sum, dn->nid, dn->ofs_in_node, fio->version); in f2fs_outplace_write_data()
3044 do_write_page(&sum, fio); in f2fs_outplace_write_data()
3045 f2fs_update_data_blkaddr(dn, fio->new_blkaddr); in f2fs_outplace_write_data()
3047 f2fs_update_iostat(sbi, fio->io_type, F2FS_BLKSIZE); in f2fs_outplace_write_data()
3050 int f2fs_inplace_write_data(struct f2fs_io_info *fio) in f2fs_inplace_write_data() argument
3053 struct f2fs_sb_info *sbi = fio->sbi; in f2fs_inplace_write_data()
3055 fio->new_blkaddr = fio->old_blkaddr; in f2fs_inplace_write_data()
3057 __get_segment_type(fio); in f2fs_inplace_write_data()
3060 GET_SEGNO(sbi, fio->new_blkaddr))->type)); in f2fs_inplace_write_data()
3062 stat_inc_inplace_blocks(fio->sbi); in f2fs_inplace_write_data()
3064 err = f2fs_submit_page_bio(fio); in f2fs_inplace_write_data()
3066 update_device_state(fio); in f2fs_inplace_write_data()
3068 f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE); in f2fs_inplace_write_data()