• Home
  • Raw
  • Download

Lines Matching refs:bio

181 static int fail_bio_stripe(struct btrfs_raid_bio *rbio, struct bio *bio);
857 static void rbio_endio_bio_list(struct bio *cur, blk_status_t err) in rbio_endio_bio_list()
859 struct bio *next; in rbio_endio_bio_list()
876 struct bio *cur = bio_list_get(&rbio->bio_list); in rbio_orig_end_io()
877 struct bio *extra; in rbio_orig_end_io()
903 static void raid_write_end_io(struct bio *bio) in raid_write_end_io() argument
905 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_write_end_io()
906 blk_status_t err = bio->bi_status; in raid_write_end_io()
910 fail_bio_stripe(rbio, bio); in raid_write_end_io()
912 bio_put(bio); in raid_write_end_io()
1089 struct bio *last = bio_list->tail; in rbio_add_io_page()
1092 struct bio *bio; in rbio_add_io_page() local
1123 bio = btrfs_io_bio_alloc(bio_max_len >> PAGE_SHIFT ?: 1); in rbio_add_io_page()
1124 bio->bi_iter.bi_size = 0; in rbio_add_io_page()
1125 bio_set_dev(bio, stripe->dev->bdev); in rbio_add_io_page()
1126 bio->bi_iter.bi_sector = disk_start >> 9; in rbio_add_io_page()
1128 bio_add_page(bio, page, PAGE_SIZE, 0); in rbio_add_io_page()
1129 bio_list_add(bio_list, bio); in rbio_add_io_page()
1160 struct bio *bio; in index_rbio_pages() local
1166 bio_list_for_each(bio, &rbio->bio_list) { in index_rbio_pages()
1171 start = (u64)bio->bi_iter.bi_sector << 9; in index_rbio_pages()
1175 if (bio_flagged(bio, BIO_CLONED)) in index_rbio_pages()
1176 bio->bi_iter = btrfs_io_bio(bio)->iter; in index_rbio_pages()
1178 bio_for_each_segment(bvec, bio, iter) { in index_rbio_pages()
1204 struct bio *bio; in finish_rmw() local
1336 bio = bio_list_pop(&bio_list); in finish_rmw()
1337 if (!bio) in finish_rmw()
1340 bio->bi_private = rbio; in finish_rmw()
1341 bio->bi_end_io = raid_write_end_io; in finish_rmw()
1342 bio->bi_opf = REQ_OP_WRITE; in finish_rmw()
1344 submit_bio(bio); in finish_rmw()
1351 while ((bio = bio_list_pop(&bio_list))) in finish_rmw()
1352 bio_put(bio); in finish_rmw()
1361 struct bio *bio) in find_bio_stripe() argument
1363 u64 physical = bio->bi_iter.bi_sector; in find_bio_stripe()
1376 bio->bi_disk == stripe->dev->bdev->bd_disk && in find_bio_stripe()
1377 bio->bi_partno == stripe->dev->bdev->bd_partno) { in find_bio_stripe()
1390 struct bio *bio) in find_logical_bio_stripe() argument
1392 u64 logical = bio->bi_iter.bi_sector; in find_logical_bio_stripe()
1444 struct bio *bio) in fail_bio_stripe() argument
1446 int failed = find_bio_stripe(rbio, bio); in fail_bio_stripe()
1458 static void set_bio_pages_uptodate(struct bio *bio) in set_bio_pages_uptodate() argument
1463 ASSERT(!bio_flagged(bio, BIO_CLONED)); in set_bio_pages_uptodate()
1465 bio_for_each_segment_all(bvec, bio, iter_all) in set_bio_pages_uptodate()
1477 static void raid_rmw_end_io(struct bio *bio) in raid_rmw_end_io() argument
1479 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_rmw_end_io()
1481 if (bio->bi_status) in raid_rmw_end_io()
1482 fail_bio_stripe(rbio, bio); in raid_rmw_end_io()
1484 set_bio_pages_uptodate(bio); in raid_rmw_end_io()
1486 bio_put(bio); in raid_rmw_end_io()
1518 struct bio *bio; in raid56_rmw_stripe() local
1578 bio = bio_list_pop(&bio_list); in raid56_rmw_stripe()
1579 if (!bio) in raid56_rmw_stripe()
1582 bio->bi_private = rbio; in raid56_rmw_stripe()
1583 bio->bi_end_io = raid_rmw_end_io; in raid56_rmw_stripe()
1584 bio->bi_opf = REQ_OP_READ; in raid56_rmw_stripe()
1586 btrfs_bio_wq_end_io(rbio->fs_info, bio, BTRFS_WQ_ENDIO_RAID56); in raid56_rmw_stripe()
1588 submit_bio(bio); in raid56_rmw_stripe()
1596 while ((bio = bio_list_pop(&bio_list))) in raid56_rmw_stripe()
1597 bio_put(bio); in raid56_rmw_stripe()
1757 int raid56_parity_write(struct btrfs_fs_info *fs_info, struct bio *bio, in raid56_parity_write() argument
1770 bio_list_add(&rbio->bio_list, bio); in raid56_parity_write()
1771 rbio->bio_list_bytes = bio->bi_iter.bi_size; in raid56_parity_write()
2025 static void raid_recover_end_io(struct bio *bio) in raid_recover_end_io() argument
2027 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_recover_end_io()
2033 if (bio->bi_status) in raid_recover_end_io()
2034 fail_bio_stripe(rbio, bio); in raid_recover_end_io()
2036 set_bio_pages_uptodate(bio); in raid_recover_end_io()
2037 bio_put(bio); in raid_recover_end_io()
2063 struct bio *bio; in __raid56_parity_recover() local
2124 bio = bio_list_pop(&bio_list); in __raid56_parity_recover()
2125 if (!bio) in __raid56_parity_recover()
2128 bio->bi_private = rbio; in __raid56_parity_recover()
2129 bio->bi_end_io = raid_recover_end_io; in __raid56_parity_recover()
2130 bio->bi_opf = REQ_OP_READ; in __raid56_parity_recover()
2132 btrfs_bio_wq_end_io(rbio->fs_info, bio, BTRFS_WQ_ENDIO_RAID56); in __raid56_parity_recover()
2134 submit_bio(bio); in __raid56_parity_recover()
2144 while ((bio = bio_list_pop(&bio_list))) in __raid56_parity_recover()
2145 bio_put(bio); in __raid56_parity_recover()
2156 int raid56_parity_recover(struct btrfs_fs_info *fs_info, struct bio *bio, in raid56_parity_recover() argument
2165 btrfs_io_bio(bio)->mirror_num = mirror_num; in raid56_parity_recover()
2176 bio_list_add(&rbio->bio_list, bio); in raid56_parity_recover()
2177 rbio->bio_list_bytes = bio->bi_iter.bi_size; in raid56_parity_recover()
2179 rbio->faila = find_logical_bio_stripe(rbio, bio); in raid56_parity_recover()
2183 __func__, (u64)bio->bi_iter.bi_sector << 9, in raid56_parity_recover()
2184 (u64)bio->bi_iter.bi_size, bbio->map_type); in raid56_parity_recover()
2262 raid56_parity_alloc_scrub_rbio(struct btrfs_fs_info *fs_info, struct bio *bio, in raid56_parity_alloc_scrub_rbio() argument
2273 bio_list_add(&rbio->bio_list, bio); in raid56_parity_alloc_scrub_rbio()
2278 ASSERT(!bio->bi_iter.bi_size); in raid56_parity_alloc_scrub_rbio()
2363 struct bio *bio; in finish_parity_scrub() local
2497 bio = bio_list_pop(&bio_list); in finish_parity_scrub()
2498 if (!bio) in finish_parity_scrub()
2501 bio->bi_private = rbio; in finish_parity_scrub()
2502 bio->bi_end_io = raid_write_end_io; in finish_parity_scrub()
2503 bio->bi_opf = REQ_OP_WRITE; in finish_parity_scrub()
2505 submit_bio(bio); in finish_parity_scrub()
2512 while ((bio = bio_list_pop(&bio_list))) in finish_parity_scrub()
2513 bio_put(bio); in finish_parity_scrub()
2592 static void raid56_parity_scrub_end_io(struct bio *bio) in raid56_parity_scrub_end_io() argument
2594 struct btrfs_raid_bio *rbio = bio->bi_private; in raid56_parity_scrub_end_io()
2596 if (bio->bi_status) in raid56_parity_scrub_end_io()
2597 fail_bio_stripe(rbio, bio); in raid56_parity_scrub_end_io()
2599 set_bio_pages_uptodate(bio); in raid56_parity_scrub_end_io()
2601 bio_put(bio); in raid56_parity_scrub_end_io()
2621 struct bio *bio; in raid56_parity_scrub_stripe() local
2679 bio = bio_list_pop(&bio_list); in raid56_parity_scrub_stripe()
2680 if (!bio) in raid56_parity_scrub_stripe()
2683 bio->bi_private = rbio; in raid56_parity_scrub_stripe()
2684 bio->bi_end_io = raid56_parity_scrub_end_io; in raid56_parity_scrub_stripe()
2685 bio->bi_opf = REQ_OP_READ; in raid56_parity_scrub_stripe()
2687 btrfs_bio_wq_end_io(rbio->fs_info, bio, BTRFS_WQ_ENDIO_RAID56); in raid56_parity_scrub_stripe()
2689 submit_bio(bio); in raid56_parity_scrub_stripe()
2697 while ((bio = bio_list_pop(&bio_list))) in raid56_parity_scrub_stripe()
2698 bio_put(bio); in raid56_parity_scrub_stripe()
2723 raid56_alloc_missing_rbio(struct btrfs_fs_info *fs_info, struct bio *bio, in raid56_alloc_missing_rbio() argument
2733 bio_list_add(&rbio->bio_list, bio); in raid56_alloc_missing_rbio()
2738 ASSERT(!bio->bi_iter.bi_size); in raid56_alloc_missing_rbio()
2740 rbio->faila = find_logical_bio_stripe(rbio, bio); in raid56_alloc_missing_rbio()