Lines Matching refs:fio

3329 static int __get_segment_type_2(struct f2fs_io_info *fio)  in __get_segment_type_2()  argument
3331 if (fio->type == DATA) in __get_segment_type_2()
3337 static int __get_segment_type_4(struct f2fs_io_info *fio) in __get_segment_type_4() argument
3339 if (fio->type == DATA) { in __get_segment_type_4()
3340 struct inode *inode = fio->page->mapping->host; in __get_segment_type_4()
3347 if (IS_DNODE(fio->page) && is_cold_node(fio->page)) in __get_segment_type_4()
3371 static int __get_segment_type_6(struct f2fs_io_info *fio) in __get_segment_type_6() argument
3373 if (fio->type == DATA) { in __get_segment_type_6()
3374 struct inode *inode = fio->page->mapping->host; in __get_segment_type_6()
3380 if (page_private_gcing(fio->page)) { in __get_segment_type_6()
3381 if (fio->sbi->am.atgc_enabled && in __get_segment_type_6()
3382 (fio->io_type == FS_DATA_IO) && in __get_segment_type_6()
3383 (fio->sbi->gc_mode != GC_URGENT_HIGH) && in __get_segment_type_6()
3384 __is_valid_data_blkaddr(fio->old_blkaddr) && in __get_segment_type_6()
3393 type = __get_age_segment_type(inode, fio->page->index); in __get_segment_type_6()
3403 if (IS_DNODE(fio->page)) in __get_segment_type_6()
3404 return is_cold_node(fio->page) ? CURSEG_WARM_NODE : in __get_segment_type_6()
3410 static int __get_segment_type(struct f2fs_io_info *fio) in __get_segment_type() argument
3414 switch (F2FS_OPTION(fio->sbi).active_logs) { in __get_segment_type()
3416 type = __get_segment_type_2(fio); in __get_segment_type()
3419 type = __get_segment_type_4(fio); in __get_segment_type()
3422 type = __get_segment_type_6(fio); in __get_segment_type()
3425 f2fs_bug_on(fio->sbi, true); in __get_segment_type()
3429 fio->temp = HOT; in __get_segment_type()
3431 fio->temp = WARM; in __get_segment_type()
3433 fio->temp = COLD; in __get_segment_type()
3453 struct f2fs_io_info *fio) in f2fs_allocate_data_block() argument
3550 if (fio) { in f2fs_allocate_data_block()
3553 INIT_LIST_HEAD(&fio->list); in f2fs_allocate_data_block()
3554 fio->in_list = 1; in f2fs_allocate_data_block()
3555 io = sbi->write_io[fio->type] + fio->temp; in f2fs_allocate_data_block()
3557 list_add_tail(&fio->list, &io->io_list); in f2fs_allocate_data_block()
3593 static void do_write_page(struct f2fs_summary *sum, struct f2fs_io_info *fio) in do_write_page() argument
3595 int type = __get_segment_type(fio); in do_write_page()
3596 bool keep_order = (f2fs_lfs_mode(fio->sbi) && type == CURSEG_COLD_DATA); in do_write_page()
3599 f2fs_down_read(&fio->sbi->io_order_lock); in do_write_page()
3601 f2fs_allocate_data_block(fio->sbi, fio->page, fio->old_blkaddr, in do_write_page()
3602 &fio->new_blkaddr, sum, type, fio); in do_write_page()
3603 if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO) in do_write_page()
3604 f2fs_invalidate_internal_cache(fio->sbi, fio->old_blkaddr); in do_write_page()
3607 f2fs_submit_page_write(fio); in do_write_page()
3609 f2fs_update_device_state(fio->sbi, fio->ino, fio->new_blkaddr, 1); in do_write_page()
3612 f2fs_up_read(&fio->sbi->io_order_lock); in do_write_page()
3618 struct f2fs_io_info fio = { in f2fs_do_write_meta_page() local
3632 fio.op_flags &= ~REQ_META; in f2fs_do_write_meta_page()
3635 f2fs_submit_page_write(&fio); in f2fs_do_write_meta_page()
3641 void f2fs_do_write_node_page(unsigned int nid, struct f2fs_io_info *fio) in f2fs_do_write_node_page() argument
3646 do_write_page(&sum, fio); in f2fs_do_write_node_page()
3648 f2fs_update_iostat(fio->sbi, NULL, fio->io_type, F2FS_BLKSIZE); in f2fs_do_write_node_page()
3652 struct f2fs_io_info *fio) in f2fs_outplace_write_data() argument
3654 struct f2fs_sb_info *sbi = fio->sbi; in f2fs_outplace_write_data()
3658 if (fio->io_type == FS_DATA_IO || fio->io_type == FS_CP_DATA_IO) in f2fs_outplace_write_data()
3660 set_summary(&sum, dn->nid, dn->ofs_in_node, fio->version); in f2fs_outplace_write_data()
3661 do_write_page(&sum, fio); in f2fs_outplace_write_data()
3662 f2fs_update_data_blkaddr(dn, fio->new_blkaddr); in f2fs_outplace_write_data()
3664 f2fs_update_iostat(sbi, dn->inode, fio->io_type, F2FS_BLKSIZE); in f2fs_outplace_write_data()
3667 int f2fs_inplace_write_data(struct f2fs_io_info *fio) in f2fs_inplace_write_data() argument
3670 struct f2fs_sb_info *sbi = fio->sbi; in f2fs_inplace_write_data()
3673 fio->new_blkaddr = fio->old_blkaddr; in f2fs_inplace_write_data()
3675 __get_segment_type(fio); in f2fs_inplace_write_data()
3677 segno = GET_SEGNO(sbi, fio->new_blkaddr); in f2fs_inplace_write_data()
3693 if (fio->meta_gc) in f2fs_inplace_write_data()
3694 f2fs_truncate_meta_inode_pages(sbi, fio->new_blkaddr, 1); in f2fs_inplace_write_data()
3696 stat_inc_inplace_blocks(fio->sbi); in f2fs_inplace_write_data()
3698 if (fio->bio && !IS_F2FS_IPU_NOCACHE(sbi)) in f2fs_inplace_write_data()
3699 err = f2fs_merge_page_bio(fio); in f2fs_inplace_write_data()
3701 err = f2fs_submit_page_bio(fio); in f2fs_inplace_write_data()
3703 f2fs_update_device_state(fio->sbi, fio->ino, in f2fs_inplace_write_data()
3704 fio->new_blkaddr, 1); in f2fs_inplace_write_data()
3705 f2fs_update_iostat(fio->sbi, fio->page->mapping->host, in f2fs_inplace_write_data()
3706 fio->io_type, F2FS_BLKSIZE); in f2fs_inplace_write_data()
3711 if (fio->bio && *(fio->bio)) { in f2fs_inplace_write_data()
3712 struct bio *bio = *(fio->bio); in f2fs_inplace_write_data()
3716 *(fio->bio) = NULL; in f2fs_inplace_write_data()