Lines Matching refs:bio
185 static int fail_bio_stripe(struct btrfs_raid_bio *rbio, struct bio *bio);
856 struct bio *cur = bio_list_get(&rbio->bio_list); in rbio_orig_end_io()
857 struct bio *next; in rbio_orig_end_io()
878 static void raid_write_end_io(struct bio *bio, int err) in raid_write_end_io() argument
880 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_write_end_io()
883 fail_bio_stripe(rbio, bio); in raid_write_end_io()
885 bio_put(bio); in raid_write_end_io()
1050 struct bio *last = bio_list->tail; in rbio_add_io_page()
1053 struct bio *bio; in rbio_add_io_page() local
1083 bio = btrfs_io_bio_alloc(GFP_NOFS, bio_max_len >> PAGE_SHIFT?:1); in rbio_add_io_page()
1084 if (!bio) in rbio_add_io_page()
1087 bio->bi_iter.bi_size = 0; in rbio_add_io_page()
1088 bio->bi_bdev = stripe->dev->bdev; in rbio_add_io_page()
1089 bio->bi_iter.bi_sector = disk_start >> 9; in rbio_add_io_page()
1090 set_bit(BIO_UPTODATE, &bio->bi_flags); in rbio_add_io_page()
1092 bio_add_page(bio, page, PAGE_CACHE_SIZE, 0); in rbio_add_io_page()
1093 bio_list_add(bio_list, bio); in rbio_add_io_page()
1136 struct bio *bio; in index_rbio_pages() local
1144 bio_list_for_each(bio, &rbio->bio_list) { in index_rbio_pages()
1145 start = (u64)bio->bi_iter.bi_sector << 9; in index_rbio_pages()
1149 for (i = 0; i < bio->bi_vcnt; i++) { in index_rbio_pages()
1150 p = bio->bi_io_vec[i].bv_page; in index_rbio_pages()
1176 struct bio *bio; in finish_rmw() local
1309 bio = bio_list_pop(&bio_list); in finish_rmw()
1310 if (!bio) in finish_rmw()
1313 bio->bi_private = rbio; in finish_rmw()
1314 bio->bi_end_io = raid_write_end_io; in finish_rmw()
1315 BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); in finish_rmw()
1316 submit_bio(WRITE, bio); in finish_rmw()
1330 struct bio *bio) in find_bio_stripe() argument
1332 u64 physical = bio->bi_iter.bi_sector; in find_bio_stripe()
1344 bio->bi_bdev == stripe->dev->bdev) { in find_bio_stripe()
1357 struct bio *bio) in find_logical_bio_stripe() argument
1359 u64 logical = bio->bi_iter.bi_sector; in find_logical_bio_stripe()
1411 struct bio *bio) in fail_bio_stripe() argument
1413 int failed = find_bio_stripe(rbio, bio); in fail_bio_stripe()
1425 static void set_bio_pages_uptodate(struct bio *bio) in set_bio_pages_uptodate() argument
1430 for (i = 0; i < bio->bi_vcnt; i++) { in set_bio_pages_uptodate()
1431 p = bio->bi_io_vec[i].bv_page; in set_bio_pages_uptodate()
1444 static void raid_rmw_end_io(struct bio *bio, int err) in raid_rmw_end_io() argument
1446 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_rmw_end_io()
1449 fail_bio_stripe(rbio, bio); in raid_rmw_end_io()
1451 set_bio_pages_uptodate(bio); in raid_rmw_end_io()
1453 bio_put(bio); in raid_rmw_end_io()
1505 struct bio *bio; in raid56_rmw_stripe() local
1565 bio = bio_list_pop(&bio_list); in raid56_rmw_stripe()
1566 if (!bio) in raid56_rmw_stripe()
1569 bio->bi_private = rbio; in raid56_rmw_stripe()
1570 bio->bi_end_io = raid_rmw_end_io; in raid56_rmw_stripe()
1572 btrfs_bio_wq_end_io(rbio->fs_info, bio, in raid56_rmw_stripe()
1575 BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); in raid56_rmw_stripe()
1576 submit_bio(READ, bio); in raid56_rmw_stripe()
1739 int raid56_parity_write(struct btrfs_root *root, struct bio *bio, in raid56_parity_write() argument
1752 bio_list_add(&rbio->bio_list, bio); in raid56_parity_write()
1753 rbio->bio_list_bytes = bio->bi_iter.bi_size; in raid56_parity_write()
1987 static void raid_recover_end_io(struct bio *bio, int err) in raid_recover_end_io() argument
1989 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_recover_end_io()
1996 fail_bio_stripe(rbio, bio); in raid_recover_end_io()
1998 set_bio_pages_uptodate(bio); in raid_recover_end_io()
1999 bio_put(bio); in raid_recover_end_io()
2026 struct bio *bio; in __raid56_parity_recover() local
2087 bio = bio_list_pop(&bio_list); in __raid56_parity_recover()
2088 if (!bio) in __raid56_parity_recover()
2091 bio->bi_private = rbio; in __raid56_parity_recover()
2092 bio->bi_end_io = raid_recover_end_io; in __raid56_parity_recover()
2094 btrfs_bio_wq_end_io(rbio->fs_info, bio, in __raid56_parity_recover()
2097 BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); in __raid56_parity_recover()
2098 submit_bio(READ, bio); in __raid56_parity_recover()
2115 int raid56_parity_recover(struct btrfs_root *root, struct bio *bio, in raid56_parity_recover() argument
2130 bio_list_add(&rbio->bio_list, bio); in raid56_parity_recover()
2131 rbio->bio_list_bytes = bio->bi_iter.bi_size; in raid56_parity_recover()
2133 rbio->faila = find_logical_bio_stripe(rbio, bio); in raid56_parity_recover()
2201 raid56_parity_alloc_scrub_rbio(struct btrfs_root *root, struct bio *bio, in raid56_parity_alloc_scrub_rbio() argument
2212 bio_list_add(&rbio->bio_list, bio); in raid56_parity_alloc_scrub_rbio()
2217 ASSERT(!bio->bi_iter.bi_size); in raid56_parity_alloc_scrub_rbio()
2280 static void raid_write_parity_end_io(struct bio *bio, int err) in raid_write_parity_end_io() argument
2282 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_write_parity_end_io()
2285 fail_bio_stripe(rbio, bio); in raid_write_parity_end_io()
2287 bio_put(bio); in raid_write_parity_end_io()
2314 struct bio *bio; in finish_parity_scrub() local
2447 bio = bio_list_pop(&bio_list); in finish_parity_scrub()
2448 if (!bio) in finish_parity_scrub()
2451 bio->bi_private = rbio; in finish_parity_scrub()
2452 bio->bi_end_io = raid_write_parity_end_io; in finish_parity_scrub()
2453 BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); in finish_parity_scrub()
2454 submit_bio(WRITE, bio); in finish_parity_scrub()
2538 static void raid56_parity_scrub_end_io(struct bio *bio, int err) in raid56_parity_scrub_end_io() argument
2540 struct btrfs_raid_bio *rbio = bio->bi_private; in raid56_parity_scrub_end_io()
2543 fail_bio_stripe(rbio, bio); in raid56_parity_scrub_end_io()
2545 set_bio_pages_uptodate(bio); in raid56_parity_scrub_end_io()
2547 bio_put(bio); in raid56_parity_scrub_end_io()
2567 struct bio *bio; in raid56_parity_scrub_stripe() local
2625 bio = bio_list_pop(&bio_list); in raid56_parity_scrub_stripe()
2626 if (!bio) in raid56_parity_scrub_stripe()
2629 bio->bi_private = rbio; in raid56_parity_scrub_stripe()
2630 bio->bi_end_io = raid56_parity_scrub_end_io; in raid56_parity_scrub_stripe()
2632 btrfs_bio_wq_end_io(rbio->fs_info, bio, in raid56_parity_scrub_stripe()
2635 BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); in raid56_parity_scrub_stripe()
2636 submit_bio(READ, bio); in raid56_parity_scrub_stripe()