Lines Matching defs:bio
44 * of (dynamically allocated) pages that are added to a bio.
46 #define SCRUB_PAGES_PER_RD_BIO 32 /* 128k per bio */
47 #define SCRUB_PAGES_PER_WR_BIO 32 /* 128k per bio */
88 struct bio *bio;
242 static void scrub_bio_end_io(struct bio *bio);
253 static void scrub_wr_bio_end_io(struct bio *bio);
553 bio_put(sbio->bio);
815 * pages failed or the bio failed to read, e.g. with EIO. In the latter
816 * case, this function handles all pages in the bio, even though only one
952 * the area was part of a huge bio and other parts of the
953 * bio caused I/O errors, or the block layer merged several
955 * different bio (usually one of the two latter cases is
1390 static void scrub_bio_wait_endio(struct bio *bio)
1392 complete(bio->bi_private);
1396 struct bio *bio,
1403 bio->bi_iter.bi_sector = page->logical >> 9;
1404 bio->bi_private = &done;
1405 bio->bi_end_io = scrub_bio_wait_endio;
1408 ret = raid56_parity_recover(fs_info, bio, page->recover->bbio,
1415 return blk_status_to_errno(bio->bi_status);
1422 struct bio *bio;
1430 bio = btrfs_io_bio_alloc(BIO_MAX_PAGES);
1431 bio_set_dev(bio, first_page->dev->bdev);
1437 bio_add_page(bio, page->page, PAGE_SIZE, 0);
1440 if (scrub_submit_raid56_bio_wait(fs_info, bio, first_page)) {
1441 bio_put(bio);
1445 bio_put(bio);
1477 struct bio *bio;
1487 bio = btrfs_io_bio_alloc(1);
1488 bio_set_dev(bio, page->dev->bdev);
1490 bio_add_page(bio, page->page, PAGE_SIZE, 0);
1491 bio->bi_iter.bi_sector = page->physical >> 9;
1492 bio->bi_opf = REQ_OP_READ;
1494 if (btrfsic_submit_bio_wait(bio)) {
1499 bio_put(bio);
1559 struct bio *bio;
1568 bio = btrfs_io_bio_alloc(1);
1569 bio_set_dev(bio, page_bad->dev->bdev);
1570 bio->bi_iter.bi_sector = page_bad->physical >> 9;
1571 bio->bi_opf = REQ_OP_WRITE;
1573 ret = bio_add_page(bio, page_good->page, PAGE_SIZE, 0);
1575 bio_put(bio);
1579 if (btrfsic_submit_bio_wait(bio)) {
1583 bio_put(bio);
1586 bio_put(bio);
1645 struct bio *bio;
1650 bio = sbio->bio;
1651 if (!bio) {
1652 bio = btrfs_io_bio_alloc(sctx->pages_per_wr_bio);
1653 sbio->bio = bio;
1656 bio->bi_private = sbio;
1657 bio->bi_end_io = scrub_wr_bio_end_io;
1658 bio_set_dev(bio, sbio->dev->bdev);
1659 bio->bi_iter.bi_sector = sbio->physical >> 9;
1660 bio->bi_opf = REQ_OP_WRITE;
1670 ret = bio_add_page(sbio->bio, spage->page, PAGE_SIZE, 0);
1673 bio_put(sbio->bio);
1674 sbio->bio = NULL;
1701 WARN_ON(!sbio->bio->bi_disk);
1707 btrfsic_submit_bio(sbio->bio);
1710 static void scrub_wr_bio_end_io(struct bio *bio)
1712 struct scrub_bio *sbio = bio->bi_private;
1715 sbio->status = bio->bi_status;
1716 sbio->bio = bio;
1744 bio_put(sbio->bio);
1962 btrfsic_submit_bio(sbio->bio);
1974 * grab a fresh bio or wait for one to become available
1991 struct bio *bio;
1996 bio = sbio->bio;
1997 if (!bio) {
1998 bio = btrfs_io_bio_alloc(sctx->pages_per_rd_bio);
1999 sbio->bio = bio;
2002 bio->bi_private = sbio;
2003 bio->bi_end_io = scrub_bio_end_io;
2004 bio_set_dev(bio, sbio->dev->bdev);
2005 bio->bi_iter.bi_sector = sbio->physical >> 9;
2006 bio->bi_opf = REQ_OP_READ;
2018 ret = bio_add_page(sbio->bio, spage->page, PAGE_SIZE, 0);
2021 bio_put(sbio->bio);
2022 sbio->bio = NULL;
2029 scrub_block_get(sblock); /* one for the page added to the bio */
2038 static void scrub_missing_raid56_end_io(struct bio *bio)
2040 struct scrub_block *sblock = bio->bi_private;
2043 if (bio->bi_status)
2046 bio_put(bio);
2100 struct bio *bio;
2122 bio = btrfs_io_bio_alloc(0);
2123 bio->bi_iter.bi_sector = logical >> 9;
2124 bio->bi_private = sblock;
2125 bio->bi_end_io = scrub_missing_raid56_end_io;
2127 rbio = raid56_alloc_missing_rbio(fs_info, bio, bbio, length);
2144 bio_put(bio);
2170 * a bio later on */
2238 /* last one frees, either here or in bio completion for last page */
2243 static void scrub_bio_end_io(struct bio *bio)
2245 struct scrub_bio *sbio = bio->bi_private;
2248 sbio->status = bio->bi_status;
2249 sbio->bio = bio;
2280 bio_put(sbio->bio);
2281 sbio->bio = NULL;
2401 /* scrub extent tries to collect up to 64 kB for each bio */
2475 * a bio later on */
2536 /* last one frees, either here or in bio completion for last page */
2664 static void scrub_parity_bio_endio(struct bio *bio)
2666 struct scrub_parity *sparity = (struct scrub_parity *)bio->bi_private;
2669 if (bio->bi_status)
2673 bio_put(bio);
2684 struct bio *bio;
2702 bio = btrfs_io_bio_alloc(0);
2703 bio->bi_iter.bi_sector = sparity->logic_start >> 9;
2704 bio->bi_private = sparity;
2705 bio->bi_end_io = scrub_parity_bio_endio;
2707 rbio = raid56_parity_alloc_scrub_rbio(fs_info, bio, bbio,
2719 bio_put(bio);