Lines Matching refs:io
374 struct f2fs_bio_info *io = (struct f2fs_bio_info *)bio->bi_private; in f2fs_zone_write_end_io() local
376 bio->bi_private = io->bi_private; in f2fs_zone_write_end_io()
377 complete(&io->zone_wait); in f2fs_zone_write_end_io()
528 static void __submit_merged_bio(struct f2fs_bio_info *io) in __submit_merged_bio() argument
530 struct f2fs_io_info *fio = &io->fio; in __submit_merged_bio()
532 if (!io->bio) in __submit_merged_bio()
536 trace_f2fs_prepare_read_bio(io->sbi->sb, fio->type, io->bio); in __submit_merged_bio()
537 f2fs_submit_read_bio(io->sbi, io->bio, fio->type); in __submit_merged_bio()
539 trace_f2fs_prepare_write_bio(io->sbi->sb, fio->type, io->bio); in __submit_merged_bio()
540 f2fs_submit_write_bio(io->sbi, io->bio, fio->type); in __submit_merged_bio()
542 io->bio = NULL; in __submit_merged_bio()
596 struct f2fs_bio_info *io = &sbi->write_io[i][j]; in f2fs_init_write_merge_io() local
598 init_f2fs_rwsem(&io->io_rwsem); in f2fs_init_write_merge_io()
599 io->sbi = sbi; in f2fs_init_write_merge_io()
600 io->bio = NULL; in f2fs_init_write_merge_io()
601 io->last_block_in_bio = 0; in f2fs_init_write_merge_io()
602 spin_lock_init(&io->io_lock); in f2fs_init_write_merge_io()
603 INIT_LIST_HEAD(&io->io_list); in f2fs_init_write_merge_io()
604 INIT_LIST_HEAD(&io->bio_list); in f2fs_init_write_merge_io()
605 init_f2fs_rwsem(&io->bio_list_lock); in f2fs_init_write_merge_io()
607 init_completion(&io->zone_wait); in f2fs_init_write_merge_io()
608 io->zone_pending_bio = NULL; in f2fs_init_write_merge_io()
609 io->bi_private = NULL; in f2fs_init_write_merge_io()
621 struct f2fs_bio_info *io = sbi->write_io[btype] + temp; in __f2fs_submit_merged_write() local
623 f2fs_down_write(&io->io_rwsem); in __f2fs_submit_merged_write()
625 if (!io->bio) in __f2fs_submit_merged_write()
630 io->fio.type = META_FLUSH; in __f2fs_submit_merged_write()
631 io->bio->bi_opf |= REQ_META | REQ_PRIO | REQ_SYNC; in __f2fs_submit_merged_write()
633 io->bio->bi_opf |= REQ_PREFLUSH | REQ_FUA; in __f2fs_submit_merged_write()
635 __submit_merged_bio(io); in __f2fs_submit_merged_write()
637 f2fs_up_write(&io->io_rwsem); in __f2fs_submit_merged_write()
650 struct f2fs_bio_info *io = sbi->write_io[btype] + temp; in __submit_merged_write_cond() local
652 f2fs_down_read(&io->io_rwsem); in __submit_merged_write_cond()
653 ret = __has_merged_page(io->bio, inode, folio, ino); in __submit_merged_write_cond()
654 f2fs_up_read(&io->io_rwsem); in __submit_merged_write_cond()
733 static bool io_type_is_mergeable(struct f2fs_bio_info *io, in io_type_is_mergeable() argument
736 if (io->fio.op != fio->op) in io_type_is_mergeable()
738 return io->fio.op_flags == fio->op_flags; in io_type_is_mergeable()
742 struct f2fs_bio_info *io, in io_is_mergeable() argument
749 return io_type_is_mergeable(io, fio); in io_is_mergeable()
755 struct f2fs_bio_info *io = sbi->write_io[DATA] + temp; in add_bio_entry() local
765 f2fs_down_write(&io->bio_list_lock); in add_bio_entry()
766 list_add_tail(&be->list, &io->bio_list); in add_bio_entry()
767 f2fs_up_write(&io->bio_list_lock); in add_bio_entry()
786 struct f2fs_bio_info *io = sbi->write_io[DATA] + temp; in add_ipu_page() local
787 struct list_head *head = &io->bio_list; in add_ipu_page()
790 f2fs_down_write(&io->bio_list_lock); in add_ipu_page()
814 f2fs_up_write(&io->bio_list_lock); in add_ipu_page()
835 struct f2fs_bio_info *io = sbi->write_io[DATA] + temp; in f2fs_submit_merged_ipu_write() local
836 struct list_head *head = &io->bio_list; in f2fs_submit_merged_ipu_write()
842 f2fs_down_read(&io->bio_list_lock); in f2fs_submit_merged_ipu_write()
852 f2fs_up_read(&io->bio_list_lock); in f2fs_submit_merged_ipu_write()
859 f2fs_down_write(&io->bio_list_lock); in f2fs_submit_merged_ipu_write()
872 f2fs_up_write(&io->bio_list_lock); in f2fs_submit_merged_ipu_write()
948 struct f2fs_bio_info *io = sbi->write_io[btype] + fio->temp; in f2fs_submit_page_write() local
954 f2fs_down_write(&io->io_rwsem); in f2fs_submit_page_write()
957 if (f2fs_sb_has_blkzoned(sbi) && btype < META && io->zone_pending_bio) { in f2fs_submit_page_write()
958 wait_for_completion_io(&io->zone_wait); in f2fs_submit_page_write()
959 bio_put(io->zone_pending_bio); in f2fs_submit_page_write()
960 io->zone_pending_bio = NULL; in f2fs_submit_page_write()
961 io->bi_private = NULL; in f2fs_submit_page_write()
966 spin_lock(&io->io_lock); in f2fs_submit_page_write()
967 if (list_empty(&io->io_list)) { in f2fs_submit_page_write()
968 spin_unlock(&io->io_lock); in f2fs_submit_page_write()
971 fio = list_first_entry(&io->io_list, in f2fs_submit_page_write()
974 spin_unlock(&io->io_lock); in f2fs_submit_page_write()
992 if (io->bio && in f2fs_submit_page_write()
993 (!io_is_mergeable(sbi, io->bio, io, fio, io->last_block_in_bio, in f2fs_submit_page_write()
995 !f2fs_crypt_mergeable_bio(io->bio, fio_inode(fio), in f2fs_submit_page_write()
997 __submit_merged_bio(io); in f2fs_submit_page_write()
999 if (io->bio == NULL) { in f2fs_submit_page_write()
1000 io->bio = __bio_alloc(fio, BIO_MAX_VECS); in f2fs_submit_page_write()
1001 f2fs_set_bio_crypt_ctx(io->bio, fio_inode(fio), in f2fs_submit_page_write()
1003 io->fio = *fio; in f2fs_submit_page_write()
1006 if (!bio_add_folio(io->bio, bio_folio, folio_size(bio_folio), 0)) { in f2fs_submit_page_write()
1007 __submit_merged_bio(io); in f2fs_submit_page_write()
1015 io->last_block_in_bio = fio->new_blkaddr; in f2fs_submit_page_write()
1021 bio_get(io->bio); in f2fs_submit_page_write()
1022 reinit_completion(&io->zone_wait); in f2fs_submit_page_write()
1023 io->bi_private = io->bio->bi_private; in f2fs_submit_page_write()
1024 io->bio->bi_private = io; in f2fs_submit_page_write()
1025 io->bio->bi_end_io = f2fs_zone_write_end_io; in f2fs_submit_page_write()
1026 io->zone_pending_bio = io->bio; in f2fs_submit_page_write()
1027 __submit_merged_bio(io); in f2fs_submit_page_write()
1035 __submit_merged_bio(io); in f2fs_submit_page_write()
1036 f2fs_up_write(&io->io_rwsem); in f2fs_submit_page_write()