Lines Matching refs:bbio
878 static void scrub_repair_read_endio(struct btrfs_bio *bbio) in scrub_repair_read_endio() argument
880 struct scrub_stripe *stripe = bbio->private; in scrub_repair_read_endio()
883 int sector_nr = calc_sector_number(stripe, bio_first_bvec_all(&bbio->bio)); in scrub_repair_read_endio()
889 bio_for_each_bvec_all(bvec, &bbio->bio, i) in scrub_repair_read_endio()
892 if (bbio->bio.bi_status) { in scrub_repair_read_endio()
901 bio_put(&bbio->bio); in scrub_repair_read_endio()
912 static void scrub_bio_add_sector(struct btrfs_bio *bbio, struct scrub_stripe *stripe, in scrub_bio_add_sector() argument
918 ret = bio_add_page(&bbio->bio, virt_to_page(kaddr), bbio->fs_info->sectorsize, in scrub_bio_add_sector()
928 ASSERT(ret == bbio->fs_info->sectorsize); in scrub_bio_add_sector()
935 struct btrfs_bio *bbio = NULL; in scrub_stripe_submit_repair_read() local
944 if (bbio && ((i > 0 && !test_bit(i - 1, &old_error_bitmap)) || in scrub_stripe_submit_repair_read()
945 bbio->bio.bi_iter.bi_size >= blocksize)) { in scrub_stripe_submit_repair_read()
946 ASSERT(bbio->bio.bi_iter.bi_size); in scrub_stripe_submit_repair_read()
948 btrfs_submit_bbio(bbio, mirror); in scrub_stripe_submit_repair_read()
951 bbio = NULL; in scrub_stripe_submit_repair_read()
954 if (!bbio) { in scrub_stripe_submit_repair_read()
955 bbio = btrfs_bio_alloc(stripe->nr_sectors, REQ_OP_READ, in scrub_stripe_submit_repair_read()
957 bbio->bio.bi_iter.bi_sector = (stripe->logical + in scrub_stripe_submit_repair_read()
961 scrub_bio_add_sector(bbio, stripe, i); in scrub_stripe_submit_repair_read()
963 if (bbio) { in scrub_stripe_submit_repair_read()
964 ASSERT(bbio->bio.bi_iter.bi_size); in scrub_stripe_submit_repair_read()
966 btrfs_submit_bbio(bbio, mirror); in scrub_stripe_submit_repair_read()
1223 static void scrub_read_endio(struct btrfs_bio *bbio) in scrub_read_endio() argument
1225 struct scrub_stripe *stripe = bbio->private; in scrub_read_endio()
1227 int sector_nr = calc_sector_number(stripe, bio_first_bvec_all(&bbio->bio)); in scrub_read_endio()
1233 bio_for_each_bvec_all(bvec, &bbio->bio, i) in scrub_read_endio()
1237 if (bbio->bio.bi_status) { in scrub_read_endio()
1243 bio_put(&bbio->bio); in scrub_read_endio()
1251 static void scrub_write_endio(struct btrfs_bio *bbio) in scrub_write_endio() argument
1253 struct scrub_stripe *stripe = bbio->private; in scrub_write_endio()
1256 int sector_nr = calc_sector_number(stripe, bio_first_bvec_all(&bbio->bio)); in scrub_write_endio()
1260 bio_for_each_bvec_all(bvec, &bbio->bio, i) in scrub_write_endio()
1263 if (bbio->bio.bi_status) { in scrub_write_endio()
1274 bio_put(&bbio->bio); in scrub_write_endio()
1282 struct btrfs_bio *bbio, bool dev_replace) in scrub_submit_write_bio() argument
1285 u32 bio_len = bbio->bio.bi_iter.bi_size; in scrub_submit_write_bio()
1286 u32 bio_off = (bbio->bio.bi_iter.bi_sector << SECTOR_SHIFT) - in scrub_submit_write_bio()
1291 btrfs_submit_repair_write(bbio, stripe->mirror_num, dev_replace); in scrub_submit_write_bio()
1326 struct btrfs_bio *bbio = NULL; in scrub_write_sectors() local
1334 if (bbio && sector_nr && !test_bit(sector_nr - 1, &write_bitmap)) { in scrub_write_sectors()
1335 scrub_submit_write_bio(sctx, stripe, bbio, dev_replace); in scrub_write_sectors()
1336 bbio = NULL; in scrub_write_sectors()
1338 if (!bbio) { in scrub_write_sectors()
1339 bbio = btrfs_bio_alloc(stripe->nr_sectors, REQ_OP_WRITE, in scrub_write_sectors()
1341 bbio->bio.bi_iter.bi_sector = (stripe->logical + in scrub_write_sectors()
1345 scrub_bio_add_sector(bbio, stripe, sector_nr); in scrub_write_sectors()
1347 if (bbio) in scrub_write_sectors()
1348 scrub_submit_write_bio(sctx, stripe, bbio, dev_replace); in scrub_write_sectors()
1780 struct btrfs_bio *bbio = NULL; in scrub_submit_extent_sector_read() local
1795 if (bbio && in scrub_submit_extent_sector_read()
1797 bbio->bio.bi_iter.bi_size >= stripe_len)) { in scrub_submit_extent_sector_read()
1798 ASSERT(bbio->bio.bi_iter.bi_size); in scrub_submit_extent_sector_read()
1800 btrfs_submit_bbio(bbio, mirror); in scrub_submit_extent_sector_read()
1801 bbio = NULL; in scrub_submit_extent_sector_read()
1804 if (!bbio) { in scrub_submit_extent_sector_read()
1836 bbio = btrfs_bio_alloc(stripe->nr_sectors, REQ_OP_READ, in scrub_submit_extent_sector_read()
1838 bbio->bio.bi_iter.bi_sector = logical >> SECTOR_SHIFT; in scrub_submit_extent_sector_read()
1841 scrub_bio_add_sector(bbio, stripe, i); in scrub_submit_extent_sector_read()
1844 if (bbio) { in scrub_submit_extent_sector_read()
1845 ASSERT(bbio->bio.bi_iter.bi_size); in scrub_submit_extent_sector_read()
1847 btrfs_submit_bbio(bbio, mirror); in scrub_submit_extent_sector_read()
1861 struct btrfs_bio *bbio; in scrub_submit_initial_read() local
1874 bbio = btrfs_bio_alloc(SCRUB_STRIPE_PAGES, REQ_OP_READ, fs_info, in scrub_submit_initial_read()
1877 bbio->bio.bi_iter.bi_sector = stripe->logical >> SECTOR_SHIFT; in scrub_submit_initial_read()
1880 scrub_bio_add_sector(bbio, stripe, cur); in scrub_submit_initial_read()
1896 btrfs_submit_bbio(bbio, mirror); in scrub_submit_initial_read()