Lines Matching refs:fio

391 	struct f2fs_io_info fio = {  in __f2fs_commit_inmem_pages()  local
420 fio.page = page; in __f2fs_commit_inmem_pages()
421 fio.old_blkaddr = NULL_ADDR; in __f2fs_commit_inmem_pages()
422 fio.encrypted_page = NULL; in __f2fs_commit_inmem_pages()
423 fio.need_lock = LOCK_DONE; in __f2fs_commit_inmem_pages()
424 err = f2fs_do_write_data_page(&fio); in __f2fs_commit_inmem_pages()
436 cur->old_addr = fio.old_blkaddr; in __f2fs_commit_inmem_pages()
3276 static int __get_segment_type_2(struct f2fs_io_info *fio) in __get_segment_type_2() argument
3278 if (fio->type == DATA) in __get_segment_type_2()
3284 static int __get_segment_type_4(struct f2fs_io_info *fio) in __get_segment_type_4() argument
3286 if (fio->type == DATA) { in __get_segment_type_4()
3287 struct inode *inode = fio->page->mapping->host; in __get_segment_type_4()
3294 if (IS_DNODE(fio->page) && is_cold_node(fio->page)) in __get_segment_type_4()
3318 static int __get_segment_type_6(struct f2fs_io_info *fio) in __get_segment_type_6() argument
3320 if (fio->type == DATA) { in __get_segment_type_6()
3321 struct inode *inode = fio->page->mapping->host; in __get_segment_type_6()
3327 if (page_private_gcing(fio->page)) { in __get_segment_type_6()
3328 if (fio->sbi->am.atgc_enabled && in __get_segment_type_6()
3329 (fio->io_type == FS_DATA_IO) && in __get_segment_type_6()
3330 (fio->sbi->gc_mode != GC_URGENT_HIGH)) in __get_segment_type_6()
3338 type = __get_age_segment_type(inode, fio->page->index); in __get_segment_type_6()
3349 if (IS_DNODE(fio->page)) in __get_segment_type_6()
3350 return is_cold_node(fio->page) ? CURSEG_WARM_NODE : in __get_segment_type_6()
3356 static int __get_segment_type(struct f2fs_io_info *fio) in __get_segment_type() argument
3360 switch (F2FS_OPTION(fio->sbi).active_logs) { in __get_segment_type()
3362 type = __get_segment_type_2(fio); in __get_segment_type()
3365 type = __get_segment_type_4(fio); in __get_segment_type()
3368 type = __get_segment_type_6(fio); in __get_segment_type()
3371 f2fs_bug_on(fio->sbi, true); in __get_segment_type()
3375 fio->temp = HOT; in __get_segment_type()
3377 fio->temp = WARM; in __get_segment_type()
3379 fio->temp = COLD; in __get_segment_type()
3386 struct f2fs_io_info *fio) in f2fs_allocate_data_block() argument
3464 if (fio) { in f2fs_allocate_data_block()
3468 fio->retry = false; in f2fs_allocate_data_block()
3470 INIT_LIST_HEAD(&fio->list); in f2fs_allocate_data_block()
3471 fio->in_list = true; in f2fs_allocate_data_block()
3472 io = sbi->write_io[fio->type] + fio->temp; in f2fs_allocate_data_block()
3474 list_add_tail(&fio->list, &io->io_list); in f2fs_allocate_data_block()
3483 static void update_device_state(struct f2fs_io_info *fio) in update_device_state() argument
3485 struct f2fs_sb_info *sbi = fio->sbi; in update_device_state()
3491 devidx = f2fs_target_device_index(sbi, fio->new_blkaddr); in update_device_state()
3494 f2fs_set_dirty_device(sbi, fio->ino, devidx, FLUSH_INO); in update_device_state()
3504 static void do_write_page(struct f2fs_summary *sum, struct f2fs_io_info *fio) in do_write_page() argument
3506 int type = __get_segment_type(fio); in do_write_page()
3507 bool keep_order = (f2fs_lfs_mode(fio->sbi) && type == CURSEG_COLD_DATA); in do_write_page()
3510 f2fs_down_read(&fio->sbi->io_order_lock); in do_write_page()
3512 f2fs_allocate_data_block(fio->sbi, fio->page, fio->old_blkaddr, in do_write_page()
3513 &fio->new_blkaddr, sum, type, fio); in do_write_page()
3514 if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO) { in do_write_page()
3515 invalidate_mapping_pages(META_MAPPING(fio->sbi), in do_write_page()
3516 fio->old_blkaddr, fio->old_blkaddr); in do_write_page()
3517 f2fs_invalidate_compress_page(fio->sbi, fio->old_blkaddr); in do_write_page()
3521 f2fs_submit_page_write(fio); in do_write_page()
3522 if (fio->retry) { in do_write_page()
3523 fio->old_blkaddr = fio->new_blkaddr; in do_write_page()
3527 update_device_state(fio); in do_write_page()
3530 f2fs_up_read(&fio->sbi->io_order_lock); in do_write_page()
3536 struct f2fs_io_info fio = { in f2fs_do_write_meta_page() local
3550 fio.op_flags &= ~REQ_META; in f2fs_do_write_meta_page()
3554 f2fs_submit_page_write(&fio); in f2fs_do_write_meta_page()
3560 void f2fs_do_write_node_page(unsigned int nid, struct f2fs_io_info *fio) in f2fs_do_write_node_page() argument
3565 do_write_page(&sum, fio); in f2fs_do_write_node_page()
3567 f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE); in f2fs_do_write_node_page()
3571 struct f2fs_io_info *fio) in f2fs_outplace_write_data() argument
3573 struct f2fs_sb_info *sbi = fio->sbi; in f2fs_outplace_write_data()
3577 if (fio->io_type == FS_DATA_IO || fio->io_type == FS_CP_DATA_IO) in f2fs_outplace_write_data()
3579 set_summary(&sum, dn->nid, dn->ofs_in_node, fio->version); in f2fs_outplace_write_data()
3580 do_write_page(&sum, fio); in f2fs_outplace_write_data()
3581 f2fs_update_data_blkaddr(dn, fio->new_blkaddr); in f2fs_outplace_write_data()
3583 f2fs_update_iostat(sbi, fio->io_type, F2FS_BLKSIZE); in f2fs_outplace_write_data()
3586 int f2fs_inplace_write_data(struct f2fs_io_info *fio) in f2fs_inplace_write_data() argument
3589 struct f2fs_sb_info *sbi = fio->sbi; in f2fs_inplace_write_data()
3592 fio->new_blkaddr = fio->old_blkaddr; in f2fs_inplace_write_data()
3594 __get_segment_type(fio); in f2fs_inplace_write_data()
3596 segno = GET_SEGNO(sbi, fio->new_blkaddr); in f2fs_inplace_write_data()
3611 if (fio->post_read) in f2fs_inplace_write_data()
3613 fio->new_blkaddr, fio->new_blkaddr); in f2fs_inplace_write_data()
3615 stat_inc_inplace_blocks(fio->sbi); in f2fs_inplace_write_data()
3617 if (fio->bio && !(SM_I(sbi)->ipu_policy & (1 << F2FS_IPU_NOCACHE))) in f2fs_inplace_write_data()
3618 err = f2fs_merge_page_bio(fio); in f2fs_inplace_write_data()
3620 err = f2fs_submit_page_bio(fio); in f2fs_inplace_write_data()
3622 update_device_state(fio); in f2fs_inplace_write_data()
3623 f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE); in f2fs_inplace_write_data()
3628 if (fio->bio && *(fio->bio)) { in f2fs_inplace_write_data()
3629 struct bio *bio = *(fio->bio); in f2fs_inplace_write_data()
3633 *(fio->bio) = NULL; in f2fs_inplace_write_data()