Lines Matching refs:bio

186 static int fail_bio_stripe(struct btrfs_raid_bio *rbio, struct bio *bio);
868 struct bio *cur = bio_list_get(&rbio->bio_list); in rbio_orig_end_io()
869 struct bio *next; in rbio_orig_end_io()
889 static void raid_write_end_io(struct bio *bio) in raid_write_end_io() argument
891 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_write_end_io()
892 int err = bio->bi_error; in raid_write_end_io()
895 fail_bio_stripe(rbio, bio); in raid_write_end_io()
897 bio_put(bio); in raid_write_end_io()
1062 struct bio *last = bio_list->tail; in rbio_add_io_page()
1065 struct bio *bio; in rbio_add_io_page() local
1095 bio = btrfs_io_bio_alloc(GFP_NOFS, bio_max_len >> PAGE_SHIFT?:1); in rbio_add_io_page()
1096 if (!bio) in rbio_add_io_page()
1099 bio->bi_iter.bi_size = 0; in rbio_add_io_page()
1100 bio->bi_bdev = stripe->dev->bdev; in rbio_add_io_page()
1101 bio->bi_iter.bi_sector = disk_start >> 9; in rbio_add_io_page()
1103 bio_add_page(bio, page, PAGE_CACHE_SIZE, 0); in rbio_add_io_page()
1104 bio_list_add(bio_list, bio); in rbio_add_io_page()
1147 struct bio *bio; in index_rbio_pages() local
1155 bio_list_for_each(bio, &rbio->bio_list) { in index_rbio_pages()
1156 start = (u64)bio->bi_iter.bi_sector << 9; in index_rbio_pages()
1160 for (i = 0; i < bio->bi_vcnt; i++) { in index_rbio_pages()
1161 p = bio->bi_io_vec[i].bv_page; in index_rbio_pages()
1187 struct bio *bio; in finish_rmw() local
1320 bio = bio_list_pop(&bio_list); in finish_rmw()
1321 if (!bio) in finish_rmw()
1324 bio->bi_private = rbio; in finish_rmw()
1325 bio->bi_end_io = raid_write_end_io; in finish_rmw()
1326 submit_bio(WRITE, bio); in finish_rmw()
1340 struct bio *bio) in find_bio_stripe() argument
1342 u64 physical = bio->bi_iter.bi_sector; in find_bio_stripe()
1354 bio->bi_bdev == stripe->dev->bdev) { in find_bio_stripe()
1367 struct bio *bio) in find_logical_bio_stripe() argument
1369 u64 logical = bio->bi_iter.bi_sector; in find_logical_bio_stripe()
1421 struct bio *bio) in fail_bio_stripe() argument
1423 int failed = find_bio_stripe(rbio, bio); in fail_bio_stripe()
1435 static void set_bio_pages_uptodate(struct bio *bio) in set_bio_pages_uptodate() argument
1440 for (i = 0; i < bio->bi_vcnt; i++) { in set_bio_pages_uptodate()
1441 p = bio->bi_io_vec[i].bv_page; in set_bio_pages_uptodate()
1454 static void raid_rmw_end_io(struct bio *bio) in raid_rmw_end_io() argument
1456 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_rmw_end_io()
1458 if (bio->bi_error) in raid_rmw_end_io()
1459 fail_bio_stripe(rbio, bio); in raid_rmw_end_io()
1461 set_bio_pages_uptodate(bio); in raid_rmw_end_io()
1463 bio_put(bio); in raid_rmw_end_io()
1514 struct bio *bio; in raid56_rmw_stripe() local
1574 bio = bio_list_pop(&bio_list); in raid56_rmw_stripe()
1575 if (!bio) in raid56_rmw_stripe()
1578 bio->bi_private = rbio; in raid56_rmw_stripe()
1579 bio->bi_end_io = raid_rmw_end_io; in raid56_rmw_stripe()
1581 btrfs_bio_wq_end_io(rbio->fs_info, bio, in raid56_rmw_stripe()
1584 submit_bio(READ, bio); in raid56_rmw_stripe()
1747 int raid56_parity_write(struct btrfs_root *root, struct bio *bio, in raid56_parity_write() argument
1760 bio_list_add(&rbio->bio_list, bio); in raid56_parity_write()
1761 rbio->bio_list_bytes = bio->bi_iter.bi_size; in raid56_parity_write()
2000 static void raid_recover_end_io(struct bio *bio) in raid_recover_end_io() argument
2002 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_recover_end_io()
2008 if (bio->bi_error) in raid_recover_end_io()
2009 fail_bio_stripe(rbio, bio); in raid_recover_end_io()
2011 set_bio_pages_uptodate(bio); in raid_recover_end_io()
2012 bio_put(bio); in raid_recover_end_io()
2039 struct bio *bio; in __raid56_parity_recover() local
2100 bio = bio_list_pop(&bio_list); in __raid56_parity_recover()
2101 if (!bio) in __raid56_parity_recover()
2104 bio->bi_private = rbio; in __raid56_parity_recover()
2105 bio->bi_end_io = raid_recover_end_io; in __raid56_parity_recover()
2107 btrfs_bio_wq_end_io(rbio->fs_info, bio, in __raid56_parity_recover()
2110 submit_bio(READ, bio); in __raid56_parity_recover()
2128 int raid56_parity_recover(struct btrfs_root *root, struct bio *bio, in raid56_parity_recover() argument
2143 bio_list_add(&rbio->bio_list, bio); in raid56_parity_recover()
2144 rbio->bio_list_bytes = bio->bi_iter.bi_size; in raid56_parity_recover()
2146 rbio->faila = find_logical_bio_stripe(rbio, bio); in raid56_parity_recover()
2214 raid56_parity_alloc_scrub_rbio(struct btrfs_root *root, struct bio *bio, in raid56_parity_alloc_scrub_rbio() argument
2225 bio_list_add(&rbio->bio_list, bio); in raid56_parity_alloc_scrub_rbio()
2230 ASSERT(!bio->bi_iter.bi_size); in raid56_parity_alloc_scrub_rbio()
2294 static void raid_write_parity_end_io(struct bio *bio) in raid_write_parity_end_io() argument
2296 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_write_parity_end_io()
2297 int err = bio->bi_error; in raid_write_parity_end_io()
2299 if (bio->bi_error) in raid_write_parity_end_io()
2300 fail_bio_stripe(rbio, bio); in raid_write_parity_end_io()
2302 bio_put(bio); in raid_write_parity_end_io()
2329 struct bio *bio; in finish_parity_scrub() local
2462 bio = bio_list_pop(&bio_list); in finish_parity_scrub()
2463 if (!bio) in finish_parity_scrub()
2466 bio->bi_private = rbio; in finish_parity_scrub()
2467 bio->bi_end_io = raid_write_parity_end_io; in finish_parity_scrub()
2468 submit_bio(WRITE, bio); in finish_parity_scrub()
2552 static void raid56_parity_scrub_end_io(struct bio *bio) in raid56_parity_scrub_end_io() argument
2554 struct btrfs_raid_bio *rbio = bio->bi_private; in raid56_parity_scrub_end_io()
2556 if (bio->bi_error) in raid56_parity_scrub_end_io()
2557 fail_bio_stripe(rbio, bio); in raid56_parity_scrub_end_io()
2559 set_bio_pages_uptodate(bio); in raid56_parity_scrub_end_io()
2561 bio_put(bio); in raid56_parity_scrub_end_io()
2581 struct bio *bio; in raid56_parity_scrub_stripe() local
2639 bio = bio_list_pop(&bio_list); in raid56_parity_scrub_stripe()
2640 if (!bio) in raid56_parity_scrub_stripe()
2643 bio->bi_private = rbio; in raid56_parity_scrub_stripe()
2644 bio->bi_end_io = raid56_parity_scrub_end_io; in raid56_parity_scrub_stripe()
2646 btrfs_bio_wq_end_io(rbio->fs_info, bio, in raid56_parity_scrub_stripe()
2649 submit_bio(READ, bio); in raid56_parity_scrub_stripe()
2688 raid56_alloc_missing_rbio(struct btrfs_root *root, struct bio *bio, in raid56_alloc_missing_rbio() argument
2698 bio_list_add(&rbio->bio_list, bio); in raid56_alloc_missing_rbio()
2703 ASSERT(!bio->bi_iter.bi_size); in raid56_alloc_missing_rbio()
2705 rbio->faila = find_logical_bio_stripe(rbio, bio); in raid56_alloc_missing_rbio()