Lines Matching refs:bio
120 struct bio *bio; member
158 offsetof(struct btrfs_io_bio, bio)); in extent_io_init()
2030 struct bio *bio; in repair_io_failure() local
2045 bio = btrfs_io_bio_alloc(GFP_NOFS, 1); in repair_io_failure()
2046 if (!bio) in repair_io_failure()
2048 bio->bi_iter.bi_size = 0; in repair_io_failure()
2054 bio_put(bio); in repair_io_failure()
2059 bio->bi_iter.bi_sector = sector; in repair_io_failure()
2063 bio_put(bio); in repair_io_failure()
2066 bio->bi_bdev = dev->bdev; in repair_io_failure()
2067 bio_add_page(bio, page, length, pg_offset); in repair_io_failure()
2069 if (btrfsic_submit_bio_wait(WRITE_SYNC, bio)) { in repair_io_failure()
2071 bio_put(bio); in repair_io_failure()
2080 bio_put(bio); in repair_io_failure()
2291 int btrfs_check_repairable(struct inode *inode, struct bio *failed_bio, in btrfs_check_repairable()
2353 struct bio *btrfs_create_repair_bio(struct inode *inode, struct bio *failed_bio, in btrfs_create_repair_bio()
2358 struct bio *bio; in btrfs_create_repair_bio() local
2362 bio = btrfs_io_bio_alloc(GFP_NOFS, 1); in btrfs_create_repair_bio()
2363 if (!bio) in btrfs_create_repair_bio()
2366 bio->bi_end_io = endio_func; in btrfs_create_repair_bio()
2367 bio->bi_iter.bi_sector = failrec->logical >> 9; in btrfs_create_repair_bio()
2368 bio->bi_bdev = BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev; in btrfs_create_repair_bio()
2369 bio->bi_iter.bi_size = 0; in btrfs_create_repair_bio()
2370 bio->bi_private = data; in btrfs_create_repair_bio()
2377 btrfs_bio = btrfs_io_bio(bio); in btrfs_create_repair_bio()
2384 bio_add_page(bio, page, failrec->len, pg_offset); in btrfs_create_repair_bio()
2386 return bio; in btrfs_create_repair_bio()
2397 static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset, in bio_readpage_error()
2404 struct bio *bio; in bio_readpage_error() local
2426 bio = btrfs_create_repair_bio(inode, failed_bio, failrec, page, in bio_readpage_error()
2430 if (!bio) { in bio_readpage_error()
2438 ret = tree->ops->submit_bio_hook(inode, read_mode, bio, in bio_readpage_error()
2443 bio_put(bio); in bio_readpage_error()
2484 static void end_bio_extent_writepage(struct bio *bio, int err) in end_bio_extent_writepage() argument
2491 bio_for_each_segment_all(bvec, bio, i) { in end_bio_extent_writepage()
2520 bio_put(bio); in end_bio_extent_writepage()
2546 static void end_bio_extent_readpage(struct bio *bio, int err) in end_bio_extent_readpage() argument
2549 int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); in end_bio_extent_readpage()
2550 struct btrfs_io_bio *io_bio = btrfs_io_bio(bio); in end_bio_extent_readpage()
2565 bio_for_each_segment_all(bvec, bio, i) { in end_bio_extent_readpage()
2570 "mirror=%u\n", (u64)bio->bi_iter.bi_sector, err, in end_bio_extent_readpage()
2613 test_bit(BIO_UPTODATE, &bio->bi_flags)) in end_bio_extent_readpage()
2626 ret = bio_readpage_error(bio, offset, page, start, end, in end_bio_extent_readpage()
2630 test_bit(BIO_UPTODATE, &bio->bi_flags); in end_bio_extent_readpage()
2683 bio_put(bio); in end_bio_extent_readpage()
2690 struct bio *
2695 struct bio *bio; in btrfs_bio_alloc() local
2697 bio = bio_alloc_bioset(gfp_flags, nr_vecs, btrfs_bioset); in btrfs_bio_alloc()
2699 if (bio == NULL && (current->flags & PF_MEMALLOC)) { in btrfs_bio_alloc()
2700 while (!bio && (nr_vecs /= 2)) { in btrfs_bio_alloc()
2701 bio = bio_alloc_bioset(gfp_flags, in btrfs_bio_alloc()
2706 if (bio) { in btrfs_bio_alloc()
2707 bio->bi_bdev = bdev; in btrfs_bio_alloc()
2708 bio->bi_iter.bi_sector = first_sector; in btrfs_bio_alloc()
2709 btrfs_bio = btrfs_io_bio(bio); in btrfs_bio_alloc()
2714 return bio; in btrfs_bio_alloc()
2717 struct bio *btrfs_bio_clone(struct bio *bio, gfp_t gfp_mask) in btrfs_bio_clone() argument
2720 struct bio *new; in btrfs_bio_clone()
2722 new = bio_clone_bioset(bio, gfp_mask, btrfs_bioset); in btrfs_bio_clone()
2733 struct bio *btrfs_io_bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs) in btrfs_io_bio_alloc()
2736 struct bio *bio; in btrfs_io_bio_alloc() local
2738 bio = bio_alloc_bioset(gfp_mask, nr_iovecs, btrfs_bioset); in btrfs_io_bio_alloc()
2739 if (bio) { in btrfs_io_bio_alloc()
2740 btrfs_bio = btrfs_io_bio(bio); in btrfs_io_bio_alloc()
2745 return bio; in btrfs_io_bio_alloc()
2749 static int __must_check submit_one_bio(int rw, struct bio *bio, in submit_one_bio() argument
2753 struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; in submit_one_bio()
2755 struct extent_io_tree *tree = bio->bi_private; in submit_one_bio()
2760 bio->bi_private = NULL; in submit_one_bio()
2762 bio_get(bio); in submit_one_bio()
2765 ret = tree->ops->submit_bio_hook(page->mapping->host, rw, bio, in submit_one_bio()
2768 btrfsic_submit_bio(rw, bio); in submit_one_bio()
2770 if (bio_flagged(bio, BIO_EOPNOTSUPP)) in submit_one_bio()
2772 bio_put(bio); in submit_one_bio()
2777 unsigned long offset, size_t size, struct bio *bio, in merge_bio() argument
2782 ret = tree->ops->merge_bio_hook(rw, page, offset, size, bio, in merge_bio()
2793 struct bio **bio_ret, in submit_extent_page()
2802 struct bio *bio; in submit_extent_page() local
2810 bio = *bio_ret; in submit_extent_page()
2812 contig = bio->bi_iter.bi_sector == sector; in submit_extent_page()
2814 contig = bio_end_sector(bio) == sector; in submit_extent_page()
2818 merge_bio(rw, tree, page, offset, page_size, bio, bio_flags) || in submit_extent_page()
2819 bio_add_page(bio, page, page_size, offset) < page_size) { in submit_extent_page()
2820 ret = submit_one_bio(rw, bio, mirror_num, in submit_extent_page()
2826 bio = NULL; in submit_extent_page()
2836 bio = btrfs_bio_alloc(bdev, sector, nr, GFP_NOFS | __GFP_HIGH); in submit_extent_page()
2837 if (!bio) in submit_extent_page()
2840 bio_add_page(bio, page, page_size, offset); in submit_extent_page()
2841 bio->bi_end_io = end_io_func; in submit_extent_page()
2842 bio->bi_private = tree; in submit_extent_page()
2845 *bio_ret = bio; in submit_extent_page()
2847 ret = submit_one_bio(rw, bio, mirror_num, bio_flags); in submit_extent_page()
2910 struct bio **bio, int mirror_num, in __do_readpage() argument
3100 bdev, bio, pnr, in __do_readpage()
3130 struct bio **bio, int mirror_num, in __do_contiguous_readpages() argument
3151 __do_readpage(tree, pages[index], get_extent, em_cached, bio, in __do_contiguous_readpages()
3161 struct bio **bio, int mirror_num, in __extent_readpages() argument
3183 bio, mirror_num, bio_flags, in __extent_readpages()
3194 end, get_extent, em_cached, bio, in __extent_readpages()
3202 struct bio **bio, int mirror_num, in __extent_read_full_page() argument
3221 ret = __do_readpage(tree, page, get_extent, NULL, bio, mirror_num, in __extent_read_full_page()
3229 struct bio *bio = NULL; in extent_read_full_page() local
3233 ret = __extent_read_full_page(tree, page, get_extent, &bio, mirror_num, in extent_read_full_page()
3235 if (bio) in extent_read_full_page()
3236 ret = submit_one_bio(READ, bio, mirror_num, bio_flags); in extent_read_full_page()
3243 struct bio *bio = NULL; in extent_read_full_page_nolock() local
3247 ret = __do_readpage(tree, page, get_extent, NULL, &bio, mirror_num, in extent_read_full_page_nolock()
3249 if (bio) in extent_read_full_page_nolock()
3250 ret = submit_one_bio(READ, bio, mirror_num, bio_flags); in extent_read_full_page_nolock()
3499 bdev, &epd->bio, max_nr, in __extent_writepage_io()
3747 static void end_bio_extent_buffer_writepage(struct bio *bio, int err) in end_bio_extent_buffer_writepage() argument
3753 bio_for_each_segment_all(bvec, bio, i) { in end_bio_extent_buffer_writepage()
3773 bio_put(bio); in end_bio_extent_buffer_writepage()
3801 PAGE_CACHE_SIZE, 0, bdev, &epd->bio, in write_one_eb()
3836 .bio = NULL, in btree_write_cache_pages()
4090 if (epd->bio) { in flush_epd_write_bio()
4097 ret = submit_one_bio(rw, epd->bio, 0, epd->bio_flags); in flush_epd_write_bio()
4099 epd->bio = NULL; in flush_epd_write_bio()
4115 .bio = NULL, in extent_write_full_page()
4140 .bio = NULL, in extent_write_locked_range()
4180 .bio = NULL, in extent_writepages()
4200 struct bio *bio = NULL; in extent_readpages() local
4224 &bio, 0, &bio_flags, READ, &prev_em_start); in extent_readpages()
4229 &bio, 0, &bio_flags, READ, &prev_em_start); in extent_readpages()
4235 if (bio) in extent_readpages()
4236 return submit_one_bio(READ, bio, 0, bio_flags); in extent_readpages()
5207 struct bio *bio = NULL; in read_extent_buffer_pages() local
5250 get_extent, &bio, in read_extent_buffer_pages()
5260 if (bio) { in read_extent_buffer_pages()
5261 err = submit_one_bio(READ | REQ_META, bio, mirror_num, in read_extent_buffer_pages()