Lines Matching defs:fio

3367 static int __get_segment_type_2(struct f2fs_io_info *fio)
3369 if (fio->type == DATA)
3375 static int __get_segment_type_4(struct f2fs_io_info *fio)
3377 if (fio->type == DATA) {
3378 struct inode *inode = fio->page->mapping->host;
3385 if (IS_DNODE(fio->page) && is_cold_node(fio->page))
3409 static int __get_segment_type_6(struct f2fs_io_info *fio)
3411 if (fio->type == DATA) {
3412 struct inode *inode = fio->page->mapping->host;
3418 if (page_private_gcing(fio->page)) {
3419 if (fio->sbi->am.atgc_enabled &&
3420 (fio->io_type == FS_DATA_IO) &&
3421 (fio->sbi->gc_mode != GC_URGENT_HIGH))
3429 type = __get_age_segment_type(inode, fio->page->index);
3439 if (IS_DNODE(fio->page))
3440 return is_cold_node(fio->page) ? CURSEG_WARM_NODE :
3446 static int __get_segment_type(struct f2fs_io_info *fio)
3450 switch (F2FS_OPTION(fio->sbi).active_logs) {
3452 type = __get_segment_type_2(fio);
3455 type = __get_segment_type_4(fio);
3458 type = __get_segment_type_6(fio);
3461 f2fs_bug_on(fio->sbi, true);
3465 fio->temp = HOT;
3467 fio->temp = WARM;
3469 fio->temp = COLD;
3496 struct f2fs_io_info *fio)
3601 if (fio) {
3604 INIT_LIST_HEAD(&fio->list);
3605 fio->in_list = 1;
3606 io = sbi->write_io[fio->type] + fio->temp;
3608 list_add_tail(&fio->list, &io->io_list);
3651 static void do_write_page(struct f2fs_summary *sum, struct f2fs_io_info *fio)
3653 int type = __get_segment_type(fio);
3654 bool keep_order = (f2fs_lfs_mode(fio->sbi) && type == CURSEG_COLD_DATA);
3657 f2fs_down_read(&fio->sbi->io_order_lock);
3659 if (f2fs_allocate_data_block(fio->sbi, fio->page, fio->old_blkaddr,
3660 &fio->new_blkaddr, sum, type, fio)) {
3661 if (fscrypt_inode_uses_fs_layer_crypto(fio->page->mapping->host))
3662 fscrypt_finalize_bounce_page(&fio->encrypted_page);
3663 if (PageWriteback(fio->page))
3664 end_page_writeback(fio->page);
3665 if (f2fs_in_warm_node_list(fio->sbi, fio->page))
3666 f2fs_del_fsync_node_entry(fio->sbi, fio->page);
3669 if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO)
3670 f2fs_invalidate_internal_cache(fio->sbi, fio->old_blkaddr);
3673 f2fs_submit_page_write(fio);
3675 f2fs_update_device_state(fio->sbi, fio->ino, fio->new_blkaddr, 1);
3678 f2fs_up_read(&fio->sbi->io_order_lock);
3684 struct f2fs_io_info fio = {
3698 fio.op_flags &= ~REQ_META;
3701 f2fs_submit_page_write(&fio);
3707 void f2fs_do_write_node_page(unsigned int nid, struct f2fs_io_info *fio)
3712 do_write_page(&sum, fio);
3714 f2fs_update_iostat(fio->sbi, NULL, fio->io_type, F2FS_BLKSIZE);
3718 struct f2fs_io_info *fio)
3720 struct f2fs_sb_info *sbi = fio->sbi;
3724 if (fio->io_type == FS_DATA_IO || fio->io_type == FS_CP_DATA_IO)
3726 set_summary(&sum, dn->nid, dn->ofs_in_node, fio->version);
3727 do_write_page(&sum, fio);
3728 f2fs_update_data_blkaddr(dn, fio->new_blkaddr);
3730 f2fs_update_iostat(sbi, dn->inode, fio->io_type, F2FS_BLKSIZE);
3733 int f2fs_inplace_write_data(struct f2fs_io_info *fio)
3736 struct f2fs_sb_info *sbi = fio->sbi;
3739 fio->new_blkaddr = fio->old_blkaddr;
3741 __get_segment_type(fio);
3743 segno = GET_SEGNO(sbi, fio->new_blkaddr);
3759 if (fio->post_read)
3760 f2fs_truncate_meta_inode_pages(sbi, fio->new_blkaddr, 1);
3762 stat_inc_inplace_blocks(fio->sbi);
3764 if (fio->bio && !IS_F2FS_IPU_NOCACHE(sbi))
3765 err = f2fs_merge_page_bio(fio);
3767 err = f2fs_submit_page_bio(fio);
3769 f2fs_update_device_state(fio->sbi, fio->ino,
3770 fio->new_blkaddr, 1);
3771 f2fs_update_iostat(fio->sbi, fio->page->mapping->host,
3772 fio->io_type, F2FS_BLKSIZE);
3777 if (fio->bio && *(fio->bio)) {
3778 struct bio *bio = *(fio->bio);
3782 *(fio->bio) = NULL;