Lines Matching refs:fio

312 	struct f2fs_io_info *fio = &io->fio;  in __submit_merged_bio()  local
317 bio_set_op_attrs(io->bio, fio->op, fio->op_flags); in __submit_merged_bio()
319 if (is_read_io(fio->op)) in __submit_merged_bio()
320 trace_f2fs_prepare_read_bio(io->sbi->sb, fio->type, io->bio); in __submit_merged_bio()
322 trace_f2fs_prepare_write_bio(io->sbi->sb, fio->type, io->bio); in __submit_merged_bio()
324 __submit_bio(io->sbi, io->bio, fio->type); in __submit_merged_bio()
392 io->fio.type = META_FLUSH; in __f2fs_submit_merged_write()
393 io->fio.op = REQ_OP_WRITE; in __f2fs_submit_merged_write()
394 io->fio.op_flags = REQ_META | REQ_PRIO | REQ_SYNC; in __f2fs_submit_merged_write()
396 io->fio.op_flags |= REQ_PREFLUSH | REQ_FUA; in __f2fs_submit_merged_write()
444 int f2fs_submit_page_bio(struct f2fs_io_info *fio) in f2fs_submit_page_bio() argument
447 struct page *page = fio->encrypted_page ? in f2fs_submit_page_bio()
448 fio->encrypted_page : fio->page; in f2fs_submit_page_bio()
450 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr, in f2fs_submit_page_bio()
451 __is_meta_io(fio) ? META_GENERIC : DATA_GENERIC)) in f2fs_submit_page_bio()
454 trace_f2fs_submit_page_bio(page, fio); in f2fs_submit_page_bio()
455 f2fs_trace_ios(fio, 0); in f2fs_submit_page_bio()
458 bio = __bio_alloc(fio->sbi, fio->new_blkaddr, fio->io_wbc, in f2fs_submit_page_bio()
459 1, is_read_io(fio->op), fio->type, fio->temp); in f2fs_submit_page_bio()
466 if (fio->io_wbc && !is_read_io(fio->op)) in f2fs_submit_page_bio()
467 wbc_account_io(fio->io_wbc, fio->page, PAGE_SIZE); in f2fs_submit_page_bio()
469 bio_set_op_attrs(bio, fio->op, fio->op_flags); in f2fs_submit_page_bio()
471 if (!is_read_io(fio->op)) in f2fs_submit_page_bio()
472 inc_page_count(fio->sbi, WB_DATA_TYPE(fio->page)); in f2fs_submit_page_bio()
474 __submit_bio(fio->sbi, bio, fio->type); in f2fs_submit_page_bio()
478 void f2fs_submit_page_write(struct f2fs_io_info *fio) in f2fs_submit_page_write() argument
480 struct f2fs_sb_info *sbi = fio->sbi; in f2fs_submit_page_write()
481 enum page_type btype = PAGE_TYPE_OF_BIO(fio->type); in f2fs_submit_page_write()
482 struct f2fs_bio_info *io = sbi->write_io[btype] + fio->temp; in f2fs_submit_page_write()
485 f2fs_bug_on(sbi, is_read_io(fio->op)); in f2fs_submit_page_write()
489 if (fio->in_list) { in f2fs_submit_page_write()
495 fio = list_first_entry(&io->io_list, in f2fs_submit_page_write()
497 list_del(&fio->list); in f2fs_submit_page_write()
501 if (__is_valid_data_blkaddr(fio->old_blkaddr)) in f2fs_submit_page_write()
502 verify_block_addr(fio, fio->old_blkaddr); in f2fs_submit_page_write()
503 verify_block_addr(fio, fio->new_blkaddr); in f2fs_submit_page_write()
505 bio_page = fio->encrypted_page ? fio->encrypted_page : fio->page; in f2fs_submit_page_write()
508 fio->submitted = true; in f2fs_submit_page_write()
512 if (io->bio && (io->last_block_in_bio != fio->new_blkaddr - 1 || in f2fs_submit_page_write()
513 (io->fio.op != fio->op || io->fio.op_flags != fio->op_flags) || in f2fs_submit_page_write()
514 !__same_bdev(sbi, fio->new_blkaddr, io->bio))) in f2fs_submit_page_write()
518 if ((fio->type == DATA || fio->type == NODE) && in f2fs_submit_page_write()
519 fio->new_blkaddr & F2FS_IO_SIZE_MASK(sbi)) { in f2fs_submit_page_write()
521 fio->retry = true; in f2fs_submit_page_write()
524 io->bio = __bio_alloc(sbi, fio->new_blkaddr, fio->io_wbc, in f2fs_submit_page_write()
526 fio->type, fio->temp); in f2fs_submit_page_write()
527 io->fio = *fio; in f2fs_submit_page_write()
535 if (fio->io_wbc) in f2fs_submit_page_write()
536 wbc_account_io(fio->io_wbc, fio->page, PAGE_SIZE); in f2fs_submit_page_write()
538 io->last_block_in_bio = fio->new_blkaddr; in f2fs_submit_page_write()
539 f2fs_trace_ios(fio, 0); in f2fs_submit_page_write()
541 trace_f2fs_submit_page_write(fio->page, fio); in f2fs_submit_page_write()
543 if (fio->in_list) in f2fs_submit_page_write()
1637 static int encrypt_one_page(struct f2fs_io_info *fio) in encrypt_one_page() argument
1639 struct inode *inode = fio->page->mapping->host; in encrypt_one_page()
1647 f2fs_wait_on_block_writeback(inode, fio->old_blkaddr); in encrypt_one_page()
1650 fio->encrypted_page = fscrypt_encrypt_page(inode, fio->page, in encrypt_one_page()
1651 PAGE_SIZE, 0, fio->page->index, gfp_flags); in encrypt_one_page()
1652 if (IS_ERR(fio->encrypted_page)) { in encrypt_one_page()
1654 if (PTR_ERR(fio->encrypted_page) == -ENOMEM) { in encrypt_one_page()
1655 f2fs_flush_merged_writes(fio->sbi); in encrypt_one_page()
1660 return PTR_ERR(fio->encrypted_page); in encrypt_one_page()
1663 mpage = find_lock_page(META_MAPPING(fio->sbi), fio->old_blkaddr); in encrypt_one_page()
1667 page_address(fio->encrypted_page), PAGE_SIZE); in encrypt_one_page()
1674 struct f2fs_io_info *fio) in check_inplace_update_policy() argument
1694 fio && fio->op == REQ_OP_WRITE && in check_inplace_update_policy()
1695 !(fio->op_flags & REQ_SYNC) && in check_inplace_update_policy()
1707 bool f2fs_should_update_inplace(struct inode *inode, struct f2fs_io_info *fio) in f2fs_should_update_inplace() argument
1716 return check_inplace_update_policy(inode, fio); in f2fs_should_update_inplace()
1719 bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio) in f2fs_should_update_outplace() argument
1729 if (fio) { in f2fs_should_update_outplace()
1730 if (is_cold_data(fio->page)) in f2fs_should_update_outplace()
1732 if (IS_ATOMIC_WRITTEN_PAGE(fio->page)) in f2fs_should_update_outplace()
1738 static inline bool need_inplace_update(struct f2fs_io_info *fio) in need_inplace_update() argument
1740 struct inode *inode = fio->page->mapping->host; in need_inplace_update()
1742 if (f2fs_should_update_outplace(inode, fio)) in need_inplace_update()
1745 return f2fs_should_update_inplace(inode, fio); in need_inplace_update()
1748 int f2fs_do_write_data_page(struct f2fs_io_info *fio) in f2fs_do_write_data_page() argument
1750 struct page *page = fio->page; in f2fs_do_write_data_page()
1759 if (need_inplace_update(fio) && in f2fs_do_write_data_page()
1761 fio->old_blkaddr = ei.blk + page->index - ei.fofs; in f2fs_do_write_data_page()
1763 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr, in f2fs_do_write_data_page()
1768 fio->need_lock = LOCK_DONE; in f2fs_do_write_data_page()
1773 if (fio->need_lock == LOCK_REQ && !f2fs_trylock_op(fio->sbi)) in f2fs_do_write_data_page()
1780 fio->old_blkaddr = dn.data_blkaddr; in f2fs_do_write_data_page()
1783 if (fio->old_blkaddr == NULL_ADDR) { in f2fs_do_write_data_page()
1789 if (__is_valid_data_blkaddr(fio->old_blkaddr) && in f2fs_do_write_data_page()
1790 !f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr, in f2fs_do_write_data_page()
1799 if (ipu_force || (is_valid_data_blkaddr(fio->sbi, fio->old_blkaddr) && in f2fs_do_write_data_page()
1800 need_inplace_update(fio))) { in f2fs_do_write_data_page()
1801 err = encrypt_one_page(fio); in f2fs_do_write_data_page()
1808 if (fio->need_lock == LOCK_REQ) in f2fs_do_write_data_page()
1809 f2fs_unlock_op(fio->sbi); in f2fs_do_write_data_page()
1810 err = f2fs_inplace_write_data(fio); in f2fs_do_write_data_page()
1811 trace_f2fs_do_write_data_page(fio->page, IPU); in f2fs_do_write_data_page()
1816 if (fio->need_lock == LOCK_RETRY) { in f2fs_do_write_data_page()
1817 if (!f2fs_trylock_op(fio->sbi)) { in f2fs_do_write_data_page()
1821 fio->need_lock = LOCK_REQ; in f2fs_do_write_data_page()
1824 err = f2fs_get_node_info(fio->sbi, dn.nid, &ni); in f2fs_do_write_data_page()
1828 fio->version = ni.version; in f2fs_do_write_data_page()
1830 err = encrypt_one_page(fio); in f2fs_do_write_data_page()
1838 f2fs_outplace_write_data(&dn, fio); in f2fs_do_write_data_page()
1846 if (fio->need_lock == LOCK_REQ) in f2fs_do_write_data_page()
1847 f2fs_unlock_op(fio->sbi); in f2fs_do_write_data_page()
1864 struct f2fs_io_info fio = { in __write_data_page() local
1920 fio.need_lock = LOCK_DONE; in __write_data_page()
1921 err = f2fs_do_write_data_page(&fio); in __write_data_page()
1940 err = f2fs_do_write_data_page(&fio); in __write_data_page()
1942 fio.need_lock = LOCK_REQ; in __write_data_page()
1943 err = f2fs_do_write_data_page(&fio); in __write_data_page()
1984 *submitted = fio.submitted; in __write_data_page()