Lines Matching refs:fio
477 struct f2fs_io_info fio = {
506 fio.page = page;
507 fio.old_blkaddr = NULL_ADDR;
508 fio.encrypted_page = NULL;
509 fio.need_lock = LOCK_DONE;
510 err = f2fs_do_write_data_page(&fio);
522 cur->old_addr = fio.old_blkaddr;
3416 static int __get_segment_type_2(struct f2fs_io_info *fio)
3418 if (fio->type == DATA)
3424 static int __get_segment_type_4(struct f2fs_io_info *fio)
3426 if (fio->type == DATA) {
3427 struct inode *inode = fio->page->mapping->host;
3434 if (IS_DNODE(fio->page) && is_cold_node(fio->page))
3441 static int __get_segment_type_6(struct f2fs_io_info *fio)
3443 if (fio->type == DATA) {
3444 struct inode *inode = fio->page->mapping->host;
3446 if (is_cold_data(fio->page)) {
3447 if (fio->sbi->am.atgc_enabled)
3461 if (IS_DNODE(fio->page))
3462 return is_cold_node(fio->page) ? CURSEG_WARM_NODE :
3468 static int __get_segment_type(struct f2fs_io_info *fio)
3472 switch (F2FS_OPTION(fio->sbi).active_logs) {
3474 type = __get_segment_type_2(fio);
3477 type = __get_segment_type_4(fio);
3480 type = __get_segment_type_6(fio);
3483 f2fs_bug_on(fio->sbi, true);
3487 fio->temp = HOT;
3489 fio->temp = WARM;
3491 fio->temp = COLD;
3498 struct f2fs_io_info *fio, int contig_level)
3591 if (fio) {
3595 fio->retry = false;
3597 INIT_LIST_HEAD(&fio->list);
3598 fio->in_list = true;
3599 io = sbi->write_io[fio->type] + fio->temp;
3601 list_add_tail(&fio->list, &io->io_list);
3610 static void update_device_state(struct f2fs_io_info *fio)
3612 struct f2fs_sb_info *sbi = fio->sbi;
3618 devidx = f2fs_target_device_index(sbi, fio->new_blkaddr);
3621 f2fs_set_dirty_device(sbi, fio->ino, devidx, FLUSH_INO);
3631 static void do_write_page(struct f2fs_summary *sum, struct f2fs_io_info *fio)
3633 int type = __get_segment_type(fio);
3634 bool keep_order = (f2fs_lfs_mode(fio->sbi) && type == CURSEG_COLD_DATA);
3637 down_read(&fio->sbi->io_order_lock);
3639 f2fs_allocate_data_block(fio->sbi, fio->page, fio->old_blkaddr,
3640 &fio->new_blkaddr, sum, type, fio, SEQ_NONE);
3641 if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO)
3642 invalidate_mapping_pages(META_MAPPING(fio->sbi),
3643 fio->old_blkaddr, fio->old_blkaddr);
3646 f2fs_submit_page_write(fio);
3647 if (fio->retry) {
3648 fio->old_blkaddr = fio->new_blkaddr;
3652 update_device_state(fio);
3655 up_read(&fio->sbi->io_order_lock);
3661 struct f2fs_io_info fio = {
3675 fio.op_flags &= ~REQ_META;
3679 f2fs_submit_page_write(&fio);
3685 void f2fs_do_write_node_page(unsigned int nid, struct f2fs_io_info *fio)
3690 do_write_page(&sum, fio);
3692 f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE);
3696 struct f2fs_io_info *fio)
3698 struct f2fs_sb_info *sbi = fio->sbi;
3702 set_summary(&sum, dn->nid, dn->ofs_in_node, fio->version);
3703 do_write_page(&sum, fio);
3704 f2fs_update_data_blkaddr(dn, fio->new_blkaddr);
3706 f2fs_update_iostat(sbi, fio->io_type, F2FS_BLKSIZE);
3709 int f2fs_inplace_write_data(struct f2fs_io_info *fio)
3712 struct f2fs_sb_info *sbi = fio->sbi;
3715 fio->new_blkaddr = fio->old_blkaddr;
3717 __get_segment_type(fio);
3719 segno = GET_SEGNO(sbi, fio->new_blkaddr);
3728 stat_inc_inplace_blocks(fio->sbi);
3730 if (fio->bio && !(SM_I(sbi)->ipu_policy & (1 << F2FS_IPU_NOCACHE)))
3731 err = f2fs_merge_page_bio(fio);
3733 err = f2fs_submit_page_bio(fio);
3735 update_device_state(fio);
3736 f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE);