Lines Matching refs:btrfs_raid_bio
62 struct btrfs_raid_bio { struct
178 static int __raid56_parity_recover(struct btrfs_raid_bio *rbio); argument
179 static noinline void finish_rmw(struct btrfs_raid_bio *rbio);
182 static int fail_bio_stripe(struct btrfs_raid_bio *rbio, struct bio *bio);
183 static int fail_rbio_index(struct btrfs_raid_bio *rbio, int failed);
184 static void __free_raid_bio(struct btrfs_raid_bio *rbio);
185 static void index_rbio_pages(struct btrfs_raid_bio *rbio);
186 static int alloc_rbio_pages(struct btrfs_raid_bio *rbio);
188 static noinline void finish_parity_scrub(struct btrfs_raid_bio *rbio,
192 static void start_async_work(struct btrfs_raid_bio *rbio, btrfs_func_t work_func) in start_async_work()
250 static void cache_rbio_pages(struct btrfs_raid_bio *rbio) in cache_rbio_pages()
272 static int rbio_bucket(struct btrfs_raid_bio *rbio) in rbio_bucket()
291 static void steal_rbio(struct btrfs_raid_bio *src, struct btrfs_raid_bio *dest) in steal_rbio()
322 static void merge_rbio(struct btrfs_raid_bio *dest, in merge_rbio()
323 struct btrfs_raid_bio *victim) in merge_rbio()
335 static void __remove_rbio_from_cache(struct btrfs_raid_bio *rbio) in __remove_rbio_from_cache()
395 static void remove_rbio_from_cache(struct btrfs_raid_bio *rbio) in remove_rbio_from_cache()
417 struct btrfs_raid_bio *rbio; in btrfs_clear_rbio_cache()
424 struct btrfs_raid_bio, in btrfs_clear_rbio_cache()
455 static void cache_rbio(struct btrfs_raid_bio *rbio) in cache_rbio()
482 struct btrfs_raid_bio *found; in cache_rbio()
485 struct btrfs_raid_bio, in cache_rbio()
519 static int rbio_is_full(struct btrfs_raid_bio *rbio) in rbio_is_full()
544 static int rbio_can_merge(struct btrfs_raid_bio *last, in rbio_can_merge()
545 struct btrfs_raid_bio *cur) in rbio_can_merge()
605 static int rbio_stripe_page_index(struct btrfs_raid_bio *rbio, int stripe, in rbio_stripe_page_index()
615 static struct page *rbio_stripe_page(struct btrfs_raid_bio *rbio, int stripe, in rbio_stripe_page()
624 static struct page *rbio_pstripe_page(struct btrfs_raid_bio *rbio, int index) in rbio_pstripe_page()
633 static struct page *rbio_qstripe_page(struct btrfs_raid_bio *rbio, int index) in rbio_qstripe_page()
662 static noinline int lock_stripe_add(struct btrfs_raid_bio *rbio) in lock_stripe_add()
665 struct btrfs_raid_bio *cur; in lock_stripe_add()
666 struct btrfs_raid_bio *pending; in lock_stripe_add()
668 struct btrfs_raid_bio *freeit = NULL; in lock_stripe_add()
669 struct btrfs_raid_bio *cache_drop = NULL; in lock_stripe_add()
746 static noinline void unlock_stripe(struct btrfs_raid_bio *rbio) in unlock_stripe()
785 struct btrfs_raid_bio *next; in unlock_stripe()
788 next = list_entry(head, struct btrfs_raid_bio, in unlock_stripe()
823 static void __free_raid_bio(struct btrfs_raid_bio *rbio) in __free_raid_bio()
862 static void rbio_orig_end_io(struct btrfs_raid_bio *rbio, blk_status_t err) in rbio_orig_end_io()
893 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_write_end_io()
932 static struct page *page_in_rbio(struct btrfs_raid_bio *rbio, in page_in_rbio()
963 static struct btrfs_raid_bio *alloc_rbio(struct btrfs_fs_info *fs_info, in alloc_rbio()
967 struct btrfs_raid_bio *rbio; in alloc_rbio()
1030 static int alloc_rbio_pages(struct btrfs_raid_bio *rbio) in alloc_rbio_pages()
1047 static int alloc_rbio_parity_pages(struct btrfs_raid_bio *rbio) in alloc_rbio_parity_pages()
1070 static int rbio_add_io_page(struct btrfs_raid_bio *rbio, in rbio_add_io_page()
1126 static void validate_rbio_for_rmw(struct btrfs_raid_bio *rbio) in validate_rbio_for_rmw()
1144 static void index_rbio_pages(struct btrfs_raid_bio *rbio) in index_rbio_pages()
1180 static noinline void finish_rmw(struct btrfs_raid_bio *rbio) in finish_rmw()
1337 static int find_bio_stripe(struct btrfs_raid_bio *rbio, in find_bio_stripe()
1361 static int find_logical_bio_stripe(struct btrfs_raid_bio *rbio, in find_logical_bio_stripe()
1379 static int fail_rbio_index(struct btrfs_raid_bio *rbio, int failed) in fail_rbio_index()
1411 static int fail_bio_stripe(struct btrfs_raid_bio *rbio, in fail_bio_stripe()
1447 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_rmw_end_io()
1479 static int raid56_rmw_stripe(struct btrfs_raid_bio *rbio) in raid56_rmw_stripe()
1574 static int full_stripe_write(struct btrfs_raid_bio *rbio) in full_stripe_write()
1595 static int partial_stripe_write(struct btrfs_raid_bio *rbio) in partial_stripe_write()
1611 static int __raid56_parity_write(struct btrfs_raid_bio *rbio) in __raid56_parity_write()
1639 const struct btrfs_raid_bio *ra = container_of(a, struct btrfs_raid_bio, in plug_cmp()
1641 const struct btrfs_raid_bio *rb = container_of(b, struct btrfs_raid_bio, in plug_cmp()
1655 struct btrfs_raid_bio *cur; in run_plug()
1656 struct btrfs_raid_bio *last = NULL; in run_plug()
1666 struct btrfs_raid_bio, plug_list); in run_plug()
1725 struct btrfs_raid_bio *rbio; in raid56_parity_write()
1775 static void __raid_recover_end_io(struct btrfs_raid_bio *rbio) in __raid_recover_end_io()
1994 struct btrfs_raid_bio *rbio = bio->bi_private; in raid_recover_end_io()
2023 static int __raid56_parity_recover(struct btrfs_raid_bio *rbio) in __raid56_parity_recover()
2123 struct btrfs_raid_bio *rbio; in raid56_parity_recover()
2200 struct btrfs_raid_bio *rbio; in rmw_work()
2202 rbio = container_of(work, struct btrfs_raid_bio, work); in rmw_work()
2208 struct btrfs_raid_bio *rbio; in read_rebuild_work()
2210 rbio = container_of(work, struct btrfs_raid_bio, work); in read_rebuild_work()
2224 struct btrfs_raid_bio *
2230 struct btrfs_raid_bio *rbio; in raid56_parity_alloc_scrub_rbio()
2272 void raid56_add_scrub_pages(struct btrfs_raid_bio *rbio, struct page *page, in raid56_add_scrub_pages()
2290 static int alloc_rbio_essential_pages(struct btrfs_raid_bio *rbio) in alloc_rbio_essential_pages()
2312 static noinline void finish_parity_scrub(struct btrfs_raid_bio *rbio, in finish_parity_scrub()
2470 static inline int is_data_stripe(struct btrfs_raid_bio *rbio, int stripe) in is_data_stripe()
2484 static void validate_rbio_for_parity_scrub(struct btrfs_raid_bio *rbio) in validate_rbio_for_parity_scrub()
2548 struct btrfs_raid_bio *rbio = bio->bi_private; in raid56_parity_scrub_end_io()
2568 static void raid56_parity_scrub_stripe(struct btrfs_raid_bio *rbio) in raid56_parity_scrub_stripe()
2658 struct btrfs_raid_bio *rbio; in scrub_parity_work()
2660 rbio = container_of(work, struct btrfs_raid_bio, work); in scrub_parity_work()
2664 void raid56_parity_submit_scrub_rbio(struct btrfs_raid_bio *rbio) in raid56_parity_submit_scrub_rbio()
2672 struct btrfs_raid_bio *
2676 struct btrfs_raid_bio *rbio; in raid56_alloc_missing_rbio()
2706 void raid56_submit_missing_rbio(struct btrfs_raid_bio *rbio) in raid56_submit_missing_rbio()