Lines Matching refs:fio

306 	struct f2fs_io_info *fio = &io->fio;  in __submit_merged_bio()  local
311 bio_set_op_attrs(io->bio, fio->op, fio->op_flags); in __submit_merged_bio()
313 if (is_read_io(fio->op)) in __submit_merged_bio()
314 trace_f2fs_prepare_read_bio(io->sbi->sb, fio->type, io->bio); in __submit_merged_bio()
316 trace_f2fs_prepare_write_bio(io->sbi->sb, fio->type, io->bio); in __submit_merged_bio()
318 __submit_bio(io->sbi, io->bio, fio->type); in __submit_merged_bio()
386 io->fio.type = META_FLUSH; in __f2fs_submit_merged_write()
387 io->fio.op = REQ_OP_WRITE; in __f2fs_submit_merged_write()
388 io->fio.op_flags = REQ_META | REQ_PRIO | REQ_SYNC; in __f2fs_submit_merged_write()
390 io->fio.op_flags |= REQ_PREFLUSH | REQ_FUA; in __f2fs_submit_merged_write()
438 int f2fs_submit_page_bio(struct f2fs_io_info *fio) in f2fs_submit_page_bio() argument
441 struct page *page = fio->encrypted_page ? in f2fs_submit_page_bio()
442 fio->encrypted_page : fio->page; in f2fs_submit_page_bio()
444 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr, in f2fs_submit_page_bio()
445 __is_meta_io(fio) ? META_GENERIC : DATA_GENERIC)) in f2fs_submit_page_bio()
448 trace_f2fs_submit_page_bio(page, fio); in f2fs_submit_page_bio()
449 f2fs_trace_ios(fio, 0); in f2fs_submit_page_bio()
452 bio = __bio_alloc(fio->sbi, fio->new_blkaddr, fio->io_wbc, in f2fs_submit_page_bio()
453 1, is_read_io(fio->op), fio->type, fio->temp); in f2fs_submit_page_bio()
459 bio_set_op_attrs(bio, fio->op, fio->op_flags); in f2fs_submit_page_bio()
461 __submit_bio(fio->sbi, bio, fio->type); in f2fs_submit_page_bio()
463 if (!is_read_io(fio->op)) in f2fs_submit_page_bio()
464 inc_page_count(fio->sbi, WB_DATA_TYPE(fio->page)); in f2fs_submit_page_bio()
468 void f2fs_submit_page_write(struct f2fs_io_info *fio) in f2fs_submit_page_write() argument
470 struct f2fs_sb_info *sbi = fio->sbi; in f2fs_submit_page_write()
471 enum page_type btype = PAGE_TYPE_OF_BIO(fio->type); in f2fs_submit_page_write()
472 struct f2fs_bio_info *io = sbi->write_io[btype] + fio->temp; in f2fs_submit_page_write()
475 f2fs_bug_on(sbi, is_read_io(fio->op)); in f2fs_submit_page_write()
479 if (fio->in_list) { in f2fs_submit_page_write()
485 fio = list_first_entry(&io->io_list, in f2fs_submit_page_write()
487 list_del(&fio->list); in f2fs_submit_page_write()
491 if (__is_valid_data_blkaddr(fio->old_blkaddr)) in f2fs_submit_page_write()
492 verify_block_addr(fio, fio->old_blkaddr); in f2fs_submit_page_write()
493 verify_block_addr(fio, fio->new_blkaddr); in f2fs_submit_page_write()
495 bio_page = fio->encrypted_page ? fio->encrypted_page : fio->page; in f2fs_submit_page_write()
498 fio->submitted = true; in f2fs_submit_page_write()
502 if (io->bio && (io->last_block_in_bio != fio->new_blkaddr - 1 || in f2fs_submit_page_write()
503 (io->fio.op != fio->op || io->fio.op_flags != fio->op_flags) || in f2fs_submit_page_write()
504 !__same_bdev(sbi, fio->new_blkaddr, io->bio))) in f2fs_submit_page_write()
508 if ((fio->type == DATA || fio->type == NODE) && in f2fs_submit_page_write()
509 fio->new_blkaddr & F2FS_IO_SIZE_MASK(sbi)) { in f2fs_submit_page_write()
511 fio->retry = true; in f2fs_submit_page_write()
514 io->bio = __bio_alloc(sbi, fio->new_blkaddr, fio->io_wbc, in f2fs_submit_page_write()
516 fio->type, fio->temp); in f2fs_submit_page_write()
517 io->fio = *fio; in f2fs_submit_page_write()
525 if (fio->io_wbc) in f2fs_submit_page_write()
526 wbc_account_io(fio->io_wbc, bio_page, PAGE_SIZE); in f2fs_submit_page_write()
528 io->last_block_in_bio = fio->new_blkaddr; in f2fs_submit_page_write()
529 f2fs_trace_ios(fio, 0); in f2fs_submit_page_write()
531 trace_f2fs_submit_page_write(fio->page, fio); in f2fs_submit_page_write()
533 if (fio->in_list) in f2fs_submit_page_write()
1618 static int encrypt_one_page(struct f2fs_io_info *fio) in encrypt_one_page() argument
1620 struct inode *inode = fio->page->mapping->host; in encrypt_one_page()
1628 f2fs_wait_on_block_writeback(fio->sbi, fio->old_blkaddr); in encrypt_one_page()
1631 fio->encrypted_page = fscrypt_encrypt_page(inode, fio->page, in encrypt_one_page()
1632 PAGE_SIZE, 0, fio->page->index, gfp_flags); in encrypt_one_page()
1633 if (IS_ERR(fio->encrypted_page)) { in encrypt_one_page()
1635 if (PTR_ERR(fio->encrypted_page) == -ENOMEM) { in encrypt_one_page()
1636 f2fs_flush_merged_writes(fio->sbi); in encrypt_one_page()
1641 return PTR_ERR(fio->encrypted_page); in encrypt_one_page()
1644 mpage = find_lock_page(META_MAPPING(fio->sbi), fio->old_blkaddr); in encrypt_one_page()
1648 page_address(fio->encrypted_page), PAGE_SIZE); in encrypt_one_page()
1655 struct f2fs_io_info *fio) in check_inplace_update_policy() argument
1675 fio && fio->op == REQ_OP_WRITE && in check_inplace_update_policy()
1676 !(fio->op_flags & REQ_SYNC) && in check_inplace_update_policy()
1688 bool f2fs_should_update_inplace(struct inode *inode, struct f2fs_io_info *fio) in f2fs_should_update_inplace() argument
1697 return check_inplace_update_policy(inode, fio); in f2fs_should_update_inplace()
1700 bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio) in f2fs_should_update_outplace() argument
1710 if (fio) { in f2fs_should_update_outplace()
1711 if (is_cold_data(fio->page)) in f2fs_should_update_outplace()
1713 if (IS_ATOMIC_WRITTEN_PAGE(fio->page)) in f2fs_should_update_outplace()
1719 static inline bool need_inplace_update(struct f2fs_io_info *fio) in need_inplace_update() argument
1721 struct inode *inode = fio->page->mapping->host; in need_inplace_update()
1723 if (f2fs_should_update_outplace(inode, fio)) in need_inplace_update()
1726 return f2fs_should_update_inplace(inode, fio); in need_inplace_update()
1729 int f2fs_do_write_data_page(struct f2fs_io_info *fio) in f2fs_do_write_data_page() argument
1731 struct page *page = fio->page; in f2fs_do_write_data_page()
1740 if (need_inplace_update(fio) && in f2fs_do_write_data_page()
1742 fio->old_blkaddr = ei.blk + page->index - ei.fofs; in f2fs_do_write_data_page()
1744 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr, in f2fs_do_write_data_page()
1749 fio->need_lock = LOCK_DONE; in f2fs_do_write_data_page()
1754 if (fio->need_lock == LOCK_REQ && !f2fs_trylock_op(fio->sbi)) in f2fs_do_write_data_page()
1761 fio->old_blkaddr = dn.data_blkaddr; in f2fs_do_write_data_page()
1764 if (fio->old_blkaddr == NULL_ADDR) { in f2fs_do_write_data_page()
1769 if (__is_valid_data_blkaddr(fio->old_blkaddr) && in f2fs_do_write_data_page()
1770 !f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr, in f2fs_do_write_data_page()
1779 if (ipu_force || (is_valid_data_blkaddr(fio->sbi, fio->old_blkaddr) && in f2fs_do_write_data_page()
1780 need_inplace_update(fio))) { in f2fs_do_write_data_page()
1781 err = encrypt_one_page(fio); in f2fs_do_write_data_page()
1788 if (fio->need_lock == LOCK_REQ) in f2fs_do_write_data_page()
1789 f2fs_unlock_op(fio->sbi); in f2fs_do_write_data_page()
1790 err = f2fs_inplace_write_data(fio); in f2fs_do_write_data_page()
1791 trace_f2fs_do_write_data_page(fio->page, IPU); in f2fs_do_write_data_page()
1796 if (fio->need_lock == LOCK_RETRY) { in f2fs_do_write_data_page()
1797 if (!f2fs_trylock_op(fio->sbi)) { in f2fs_do_write_data_page()
1801 fio->need_lock = LOCK_REQ; in f2fs_do_write_data_page()
1804 err = f2fs_get_node_info(fio->sbi, dn.nid, &ni); in f2fs_do_write_data_page()
1808 fio->version = ni.version; in f2fs_do_write_data_page()
1810 err = encrypt_one_page(fio); in f2fs_do_write_data_page()
1818 f2fs_outplace_write_data(&dn, fio); in f2fs_do_write_data_page()
1826 if (fio->need_lock == LOCK_REQ) in f2fs_do_write_data_page()
1827 f2fs_unlock_op(fio->sbi); in f2fs_do_write_data_page()
1844 struct f2fs_io_info fio = { in __write_data_page() local
1899 fio.need_lock = LOCK_DONE; in __write_data_page()
1900 err = f2fs_do_write_data_page(&fio); in __write_data_page()
1919 err = f2fs_do_write_data_page(&fio); in __write_data_page()
1921 fio.need_lock = LOCK_REQ; in __write_data_page()
1922 err = f2fs_do_write_data_page(&fio); in __write_data_page()
1961 *submitted = fio.submitted; in __write_data_page()