Lines Matching defs:fio

419 static blk_opf_t f2fs_io_flags(struct f2fs_io_info *fio)
425 if (fio->op != REQ_OP_WRITE)
427 if (fio->type == DATA)
428 io_flag = fio->sbi->data_io_flag;
429 else if (fio->type == NODE)
430 io_flag = fio->sbi->node_io_flag;
443 if (BIT(fio->temp) & meta_flag)
445 if (BIT(fio->temp) & fua_flag)
450 static struct bio *__bio_alloc(struct f2fs_io_info *fio, int npages)
452 struct f2fs_sb_info *sbi = fio->sbi;
457 bdev = f2fs_target_device(sbi, fio->new_blkaddr, &sector);
459 fio->op | fio->op_flags | f2fs_io_flags(fio),
462 if (is_read_io(fio->op)) {
471 if (fio->io_wbc)
472 wbc_init_bio(fio->io_wbc, bio);
479 const struct f2fs_io_info *fio,
486 if (!fio || !fio->encrypted_page)
492 const struct f2fs_io_info *fio)
498 if (fio && fio->encrypted_page)
529 struct f2fs_io_info *fio = &io->fio;
534 if (is_read_io(fio->op)) {
535 trace_f2fs_prepare_read_bio(io->sbi->sb, fio->type, io->bio);
536 f2fs_submit_read_bio(io->sbi, io->bio, fio->type);
538 trace_f2fs_prepare_write_bio(io->sbi->sb, fio->type, io->bio);
539 f2fs_submit_write_bio(io->sbi, io->bio, fio->type);
627 io->fio.type = META_FLUSH;
685 int f2fs_submit_page_bio(struct f2fs_io_info *fio)
688 struct page *page = fio->encrypted_page ?
689 fio->encrypted_page : fio->page;
691 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr,
692 fio->is_por ? META_POR : (__is_meta_io(fio) ?
696 trace_f2fs_submit_page_bio(page, fio);
699 bio = __bio_alloc(fio, 1);
701 f2fs_set_bio_crypt_ctx(bio, fio->page->mapping->host,
702 fio->page->index, fio, GFP_NOIO);
709 if (fio->io_wbc && !is_read_io(fio->op))
710 wbc_account_cgroup_owner(fio->io_wbc, fio->page, PAGE_SIZE);
712 inc_page_count(fio->sbi, is_read_io(fio->op) ?
713 __read_io_type(page) : WB_DATA_TYPE(fio->page, false));
716 f2fs_submit_read_bio(fio->sbi, bio, fio->type);
718 f2fs_submit_write_bio(fio->sbi, bio, fio->type);
734 struct f2fs_io_info *fio)
736 if (io->fio.op != fio->op)
738 return io->fio.op_flags == fio->op_flags;
743 struct f2fs_io_info *fio,
749 return io_type_is_mergeable(io, fio);
776 static int add_ipu_page(struct f2fs_io_info *fio, struct bio **bio,
779 struct f2fs_sb_info *sbi = fio->sbi;
797 *fio->last_block,
798 fio->new_blkaddr));
800 fio->page->mapping->host,
801 fio->page->index, fio) &&
882 int f2fs_merge_page_bio(struct f2fs_io_info *fio)
884 struct bio *bio = *fio->bio;
885 struct page *page = fio->encrypted_page ?
886 fio->encrypted_page : fio->page;
888 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr,
889 __is_meta_io(fio) ? META_GENERIC : DATA_GENERIC))
892 trace_f2fs_submit_page_bio(page, fio);
894 if (bio && !page_is_mergeable(fio->sbi, bio, *fio->last_block,
895 fio->new_blkaddr))
896 f2fs_submit_merged_ipu_write(fio->sbi, &bio, NULL);
899 bio = __bio_alloc(fio, BIO_MAX_VECS);
900 f2fs_set_bio_crypt_ctx(bio, fio->page->mapping->host,
901 fio->page->index, fio, GFP_NOIO);
903 add_bio_entry(fio->sbi, bio, page, fio->temp);
905 if (add_ipu_page(fio, &bio, page))
909 if (fio->io_wbc)
910 wbc_account_cgroup_owner(fio->io_wbc, fio->page, PAGE_SIZE);
912 inc_page_count(fio->sbi, WB_DATA_TYPE(page, false));
914 *fio->last_block = fio->new_blkaddr;
915 *fio->bio = bio;
940 void f2fs_submit_page_write(struct f2fs_io_info *fio)
942 struct f2fs_sb_info *sbi = fio->sbi;
943 enum page_type btype = PAGE_TYPE_OF_BIO(fio->type);
944 struct f2fs_bio_info *io = sbi->write_io[btype] + fio->temp;
948 f2fs_bug_on(sbi, is_read_io(fio->op));
961 if (fio->in_list) {
967 fio = list_first_entry(&io->io_list,
969 list_del(&fio->list);
973 verify_fio_blkaddr(fio);
975 if (fio->encrypted_page)
976 bio_page = fio->encrypted_page;
977 else if (fio->compressed_page)
978 bio_page = fio->compressed_page;
980 bio_page = fio->page;
983 fio->submitted = 1;
985 type = WB_DATA_TYPE(bio_page, fio->compressed_page);
989 (!io_is_mergeable(sbi, io->bio, io, fio, io->last_block_in_bio,
990 fio->new_blkaddr) ||
991 !f2fs_crypt_mergeable_bio(io->bio, fio->page->mapping->host,
992 bio_page->index, fio)))
996 io->bio = __bio_alloc(fio, BIO_MAX_VECS);
997 f2fs_set_bio_crypt_ctx(io->bio, fio->page->mapping->host,
998 bio_page->index, fio, GFP_NOIO);
999 io->fio = *fio;
1007 if (fio->io_wbc)
1008 wbc_account_cgroup_owner(fio->io_wbc, fio->page, PAGE_SIZE);
1010 io->last_block_in_bio = fio->new_blkaddr;
1012 trace_f2fs_submit_page_write(fio->page, fio);
1015 is_end_zone_blkaddr(sbi, fio->new_blkaddr)) {
1025 if (fio->in_list)
2474 int f2fs_encrypt_one_page(struct f2fs_io_info *fio)
2476 struct inode *inode = fio->page->mapping->host;
2483 page = fio->compressed_page ? fio->compressed_page : fio->page;
2489 fio->encrypted_page = fscrypt_encrypt_pagecache_blocks(page,
2491 if (IS_ERR(fio->encrypted_page)) {
2493 if (PTR_ERR(fio->encrypted_page) == -ENOMEM) {
2494 f2fs_flush_merged_writes(fio->sbi);
2499 return PTR_ERR(fio->encrypted_page);
2502 mpage = find_lock_page(META_MAPPING(fio->sbi), fio->old_blkaddr);
2506 page_address(fio->encrypted_page), PAGE_SIZE);
2513 struct f2fs_io_info *fio)
2533 if (IS_F2FS_IPU_ASYNC(sbi) && fio && fio->op == REQ_OP_WRITE &&
2534 !(fio->op_flags & REQ_SYNC) && !IS_ENCRYPTED(inode))
2541 if (unlikely(fio && is_sbi_flag_set(sbi, SBI_CP_DISABLED) &&
2542 !f2fs_is_checkpointed_data(sbi, fio->old_blkaddr)))
2548 bool f2fs_should_update_inplace(struct inode *inode, struct f2fs_io_info *fio)
2561 return check_inplace_update_policy(inode, fio);
2564 bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio)
2571 if (fio && is_sbi_flag_set(sbi, SBI_NEED_FSCK))
2594 if (fio) {
2595 if (page_private_gcing(fio->page))
2598 f2fs_is_checkpointed_data(sbi, fio->old_blkaddr)))
2604 static inline bool need_inplace_update(struct f2fs_io_info *fio)
2606 struct inode *inode = fio->page->mapping->host;
2608 if (f2fs_should_update_outplace(inode, fio))
2611 return f2fs_should_update_inplace(inode, fio);
2614 int f2fs_do_write_data_page(struct f2fs_io_info *fio)
2616 struct page *page = fio->page;
2629 if (need_inplace_update(fio) &&
2631 &fio->old_blkaddr)) {
2632 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr,
2637 fio->need_lock = LOCK_DONE;
2642 if (fio->need_lock == LOCK_REQ && !f2fs_trylock_op(fio->sbi))
2649 fio->old_blkaddr = dn.data_blkaddr;
2652 if (fio->old_blkaddr == NULL_ADDR) {
2658 if (__is_valid_data_blkaddr(fio->old_blkaddr) &&
2659 !f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr,
2666 if (fio->post_read)
2667 f2fs_wait_on_block_writeback(inode, fio->old_blkaddr);
2674 (__is_valid_data_blkaddr(fio->old_blkaddr) &&
2675 need_inplace_update(fio))) {
2676 err = f2fs_encrypt_one_page(fio);
2682 if (fio->need_lock == LOCK_REQ)
2683 f2fs_unlock_op(fio->sbi);
2684 err = f2fs_inplace_write_data(fio);
2687 fscrypt_finalize_bounce_page(&fio->encrypted_page);
2693 trace_f2fs_do_write_data_page(fio->page, IPU);
2697 if (fio->need_lock == LOCK_RETRY) {
2698 if (!f2fs_trylock_op(fio->sbi)) {
2702 fio->need_lock = LOCK_REQ;
2705 err = f2fs_get_node_info(fio->sbi, dn.nid, &ni, false);
2709 fio->version = ni.version;
2711 err = f2fs_encrypt_one_page(fio);
2717 if (fio->compr_blocks && fio->old_blkaddr == COMPRESS_ADDR)
2718 f2fs_i_compr_blocks_update(inode, fio->compr_blocks - 1, false);
2721 f2fs_outplace_write_data(&dn, fio);
2727 if (fio->need_lock == LOCK_REQ)
2728 f2fs_unlock_op(fio->sbi);
2750 struct f2fs_io_info fio = {
2816 fio.need_lock = LOCK_DONE;
2817 err = f2fs_do_write_data_page(&fio);
2840 err = f2fs_do_write_data_page(&fio);
2843 fio.need_lock = LOCK_REQ;
2844 err = f2fs_do_write_data_page(&fio);
2887 *submitted = fio.submitted;