Lines Matching refs:bio
120 struct bio *bio; member
177 offsetof(struct btrfs_io_bio, bio)); in extent_io_init()
2098 struct bio *bio; in repair_io_failure() local
2113 bio = btrfs_io_bio_alloc(GFP_NOFS, 1); in repair_io_failure()
2114 if (!bio) in repair_io_failure()
2116 bio->bi_iter.bi_size = 0; in repair_io_failure()
2122 bio_put(bio); in repair_io_failure()
2127 bio->bi_iter.bi_sector = sector; in repair_io_failure()
2131 bio_put(bio); in repair_io_failure()
2134 bio->bi_bdev = dev->bdev; in repair_io_failure()
2135 bio_add_page(bio, page, length, pg_offset); in repair_io_failure()
2137 if (btrfsic_submit_bio_wait(WRITE_SYNC, bio)) { in repair_io_failure()
2139 bio_put(bio); in repair_io_failure()
2148 bio_put(bio); in repair_io_failure()
2359 int btrfs_check_repairable(struct inode *inode, struct bio *failed_bio, in btrfs_check_repairable()
2421 struct bio *btrfs_create_repair_bio(struct inode *inode, struct bio *failed_bio, in btrfs_create_repair_bio()
2426 struct bio *bio; in btrfs_create_repair_bio() local
2430 bio = btrfs_io_bio_alloc(GFP_NOFS, 1); in btrfs_create_repair_bio()
2431 if (!bio) in btrfs_create_repair_bio()
2434 bio->bi_end_io = endio_func; in btrfs_create_repair_bio()
2435 bio->bi_iter.bi_sector = failrec->logical >> 9; in btrfs_create_repair_bio()
2436 bio->bi_bdev = BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev; in btrfs_create_repair_bio()
2437 bio->bi_iter.bi_size = 0; in btrfs_create_repair_bio()
2438 bio->bi_private = data; in btrfs_create_repair_bio()
2445 btrfs_bio = btrfs_io_bio(bio); in btrfs_create_repair_bio()
2452 bio_add_page(bio, page, failrec->len, pg_offset); in btrfs_create_repair_bio()
2454 return bio; in btrfs_create_repair_bio()
2465 static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset, in bio_readpage_error()
2472 struct bio *bio; in bio_readpage_error() local
2494 bio = btrfs_create_repair_bio(inode, failed_bio, failrec, page, in bio_readpage_error()
2498 if (!bio) { in bio_readpage_error()
2506 ret = tree->ops->submit_bio_hook(inode, read_mode, bio, in bio_readpage_error()
2511 bio_put(bio); in bio_readpage_error()
2552 static void end_bio_extent_writepage(struct bio *bio) in end_bio_extent_writepage() argument
2559 bio_for_each_segment_all(bvec, bio, i) { in end_bio_extent_writepage()
2582 if (end_extent_writepage(page, bio->bi_error, start, end)) in end_bio_extent_writepage()
2588 bio_put(bio); in end_bio_extent_writepage()
2614 static void end_bio_extent_readpage(struct bio *bio) in end_bio_extent_readpage() argument
2617 int uptodate = !bio->bi_error; in end_bio_extent_readpage()
2618 struct btrfs_io_bio *io_bio = btrfs_io_bio(bio); in end_bio_extent_readpage()
2630 bio_for_each_segment_all(bvec, bio, i) { in end_bio_extent_readpage()
2635 "mirror=%u\n", (u64)bio->bi_iter.bi_sector, in end_bio_extent_readpage()
2636 bio->bi_error, io_bio->mirror_num); in end_bio_extent_readpage()
2677 if (!ret && !bio->bi_error) in end_bio_extent_readpage()
2690 ret = bio_readpage_error(bio, offset, page, start, end, in end_bio_extent_readpage()
2693 uptodate = !bio->bi_error; in end_bio_extent_readpage()
2743 io_bio->end_io(io_bio, bio->bi_error); in end_bio_extent_readpage()
2744 bio_put(bio); in end_bio_extent_readpage()
2751 struct bio *
2756 struct bio *bio; in btrfs_bio_alloc() local
2758 bio = bio_alloc_bioset(gfp_flags, nr_vecs, btrfs_bioset); in btrfs_bio_alloc()
2760 if (bio == NULL && (current->flags & PF_MEMALLOC)) { in btrfs_bio_alloc()
2761 while (!bio && (nr_vecs /= 2)) { in btrfs_bio_alloc()
2762 bio = bio_alloc_bioset(gfp_flags, in btrfs_bio_alloc()
2767 if (bio) { in btrfs_bio_alloc()
2768 bio->bi_bdev = bdev; in btrfs_bio_alloc()
2769 bio->bi_iter.bi_sector = first_sector; in btrfs_bio_alloc()
2770 btrfs_bio = btrfs_io_bio(bio); in btrfs_bio_alloc()
2775 return bio; in btrfs_bio_alloc()
2778 struct bio *btrfs_bio_clone(struct bio *bio, gfp_t gfp_mask) in btrfs_bio_clone() argument
2781 struct bio *new; in btrfs_bio_clone()
2783 new = bio_clone_bioset(bio, gfp_mask, btrfs_bioset); in btrfs_bio_clone()
2792 if (bio->bi_css) in btrfs_bio_clone()
2793 bio_associate_blkcg(new, bio->bi_css); in btrfs_bio_clone()
2800 struct bio *btrfs_io_bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs) in btrfs_io_bio_alloc()
2803 struct bio *bio; in btrfs_io_bio_alloc() local
2805 bio = bio_alloc_bioset(gfp_mask, nr_iovecs, btrfs_bioset); in btrfs_io_bio_alloc()
2806 if (bio) { in btrfs_io_bio_alloc()
2807 btrfs_bio = btrfs_io_bio(bio); in btrfs_io_bio_alloc()
2812 return bio; in btrfs_io_bio_alloc()
2816 static int __must_check submit_one_bio(int rw, struct bio *bio, in submit_one_bio() argument
2820 struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; in submit_one_bio()
2822 struct extent_io_tree *tree = bio->bi_private; in submit_one_bio()
2827 bio->bi_private = NULL; in submit_one_bio()
2829 bio_get(bio); in submit_one_bio()
2832 ret = tree->ops->submit_bio_hook(page->mapping->host, rw, bio, in submit_one_bio()
2835 btrfsic_submit_bio(rw, bio); in submit_one_bio()
2837 bio_put(bio); in submit_one_bio()
2842 unsigned long offset, size_t size, struct bio *bio, in merge_bio() argument
2847 ret = tree->ops->merge_bio_hook(rw, page, offset, size, bio, in merge_bio()
2859 struct bio **bio_ret, in submit_extent_page()
2868 struct bio *bio; in submit_extent_page() local
2874 bio = *bio_ret; in submit_extent_page()
2876 contig = bio->bi_iter.bi_sector == sector; in submit_extent_page()
2878 contig = bio_end_sector(bio) == sector; in submit_extent_page()
2882 merge_bio(rw, tree, page, offset, page_size, bio, bio_flags) || in submit_extent_page()
2883 bio_add_page(bio, page, page_size, offset) < page_size) { in submit_extent_page()
2884 ret = submit_one_bio(rw, bio, mirror_num, in submit_extent_page()
2890 bio = NULL; in submit_extent_page()
2898 bio = btrfs_bio_alloc(bdev, sector, BIO_MAX_PAGES, in submit_extent_page()
2900 if (!bio) in submit_extent_page()
2903 bio_add_page(bio, page, page_size, offset); in submit_extent_page()
2904 bio->bi_end_io = end_io_func; in submit_extent_page()
2905 bio->bi_private = tree; in submit_extent_page()
2907 wbc_init_bio(wbc, bio); in submit_extent_page()
2912 *bio_ret = bio; in submit_extent_page()
2914 ret = submit_one_bio(rw, bio, mirror_num, bio_flags); in submit_extent_page()
2977 struct bio **bio, int mirror_num, in __do_readpage() argument
3171 bdev, bio, pnr, in __do_readpage()
3201 struct bio **bio, int mirror_num, in __do_contiguous_readpages() argument
3222 __do_readpage(tree, pages[index], get_extent, em_cached, bio, in __do_contiguous_readpages()
3232 struct bio **bio, int mirror_num, in __extent_readpages() argument
3254 bio, mirror_num, bio_flags, in __extent_readpages()
3265 end, get_extent, em_cached, bio, in __extent_readpages()
3273 struct bio **bio, int mirror_num, in __extent_read_full_page() argument
3292 ret = __do_readpage(tree, page, get_extent, NULL, bio, mirror_num, in __extent_read_full_page()
3300 struct bio *bio = NULL; in extent_read_full_page() local
3304 ret = __extent_read_full_page(tree, page, get_extent, &bio, mirror_num, in extent_read_full_page()
3306 if (bio) in extent_read_full_page()
3307 ret = submit_one_bio(READ, bio, mirror_num, bio_flags); in extent_read_full_page()
3314 struct bio *bio = NULL; in extent_read_full_page_nolock() local
3318 ret = __do_readpage(tree, page, get_extent, NULL, &bio, mirror_num, in extent_read_full_page_nolock()
3320 if (bio) in extent_read_full_page_nolock()
3321 ret = submit_one_bio(READ, bio, mirror_num, bio_flags); in extent_read_full_page_nolock()
3570 bdev, &epd->bio, max_nr, in __extent_writepage_io()
3818 static void end_bio_extent_buffer_writepage(struct bio *bio) in end_bio_extent_buffer_writepage() argument
3824 bio_for_each_segment_all(bvec, bio, i) { in end_bio_extent_buffer_writepage()
3831 if (bio->bi_error || in end_bio_extent_buffer_writepage()
3845 bio_put(bio); in end_bio_extent_buffer_writepage()
3873 PAGE_CACHE_SIZE, 0, bdev, &epd->bio, in write_one_eb()
3908 .bio = NULL, in btree_write_cache_pages()
4162 if (epd->bio) { in flush_epd_write_bio()
4169 ret = submit_one_bio(rw, epd->bio, 0, epd->bio_flags); in flush_epd_write_bio()
4171 epd->bio = NULL; in flush_epd_write_bio()
4187 .bio = NULL, in extent_write_full_page()
4212 .bio = NULL, in extent_write_locked_range()
4252 .bio = NULL, in extent_writepages()
4272 struct bio *bio = NULL; in extent_readpages() local
4296 &bio, 0, &bio_flags, READ, &prev_em_start); in extent_readpages()
4301 &bio, 0, &bio_flags, READ, &prev_em_start); in extent_readpages()
4307 if (bio) in extent_readpages()
4308 return submit_one_bio(READ, bio, 0, bio_flags); in extent_readpages()
5279 struct bio *bio = NULL; in read_extent_buffer_pages() local
5322 get_extent, &bio, in read_extent_buffer_pages()
5332 if (bio) { in read_extent_buffer_pages()
5333 err = submit_one_bio(READ | REQ_META, bio, mirror_num, in read_extent_buffer_pages()