Lines Matching refs:spage
232 static void scrub_page_get(struct scrub_page *spage);
233 static void scrub_page_put(struct scrub_page *spage);
237 struct scrub_page *spage);
251 struct scrub_page *spage);
1507 struct scrub_page *spage) in scrub_check_fsid() argument
1509 struct btrfs_fs_devices *fs_devices = spage->dev->fs_devices; in scrub_check_fsid()
1616 struct scrub_page *spage = sblock->pagev[page_num]; in scrub_write_page_to_dev_replace() local
1618 BUG_ON(spage->page == NULL); in scrub_write_page_to_dev_replace()
1619 if (spage->io_error) in scrub_write_page_to_dev_replace()
1620 clear_page(page_address(spage->page)); in scrub_write_page_to_dev_replace()
1622 return scrub_add_page_to_wr_bio(sblock->sctx, spage); in scrub_write_page_to_dev_replace()
1626 struct scrub_page *spage) in scrub_add_page_to_wr_bio() argument
1647 sbio->physical = spage->physical_for_dev_replace; in scrub_add_page_to_wr_bio()
1648 sbio->logical = spage->logical; in scrub_add_page_to_wr_bio()
1663 spage->physical_for_dev_replace || in scrub_add_page_to_wr_bio()
1665 spage->logical) { in scrub_add_page_to_wr_bio()
1670 ret = bio_add_page(sbio->bio, spage->page, PAGE_SIZE, 0); in scrub_add_page_to_wr_bio()
1682 sbio->pagev[sbio->page_count] = spage; in scrub_add_page_to_wr_bio()
1683 scrub_page_get(spage); in scrub_add_page_to_wr_bio()
1734 struct scrub_page *spage = sbio->pagev[i]; in scrub_wr_bio_end_io_worker() local
1736 spage->io_error = 1; in scrub_wr_bio_end_io_worker()
1789 struct scrub_page *spage; in scrub_checksum_data() local
1793 spage = sblock->pagev[0]; in scrub_checksum_data()
1794 if (!spage->have_csum) in scrub_checksum_data()
1797 kaddr = page_address(spage->page); in scrub_checksum_data()
1803 if (memcmp(csum, spage->csum, sctx->csum_size)) in scrub_checksum_data()
1819 struct scrub_page *spage; in scrub_checksum_tree_block() local
1823 spage = sblock->pagev[0]; in scrub_checksum_tree_block()
1824 kaddr = page_address(spage->page); in scrub_checksum_tree_block()
1833 if (spage->logical != btrfs_stack_header_bytenr(h)) in scrub_checksum_tree_block()
1836 if (spage->generation != btrfs_stack_header_generation(h)) { in scrub_checksum_tree_block()
1841 if (!scrub_check_fsid(h->fsid, spage)) in scrub_checksum_tree_block()
1872 struct scrub_page *spage; in scrub_checksum_super() local
1878 spage = sblock->pagev[0]; in scrub_checksum_super()
1879 kaddr = page_address(spage->page); in scrub_checksum_super()
1882 if (spage->logical != btrfs_super_bytenr(s)) in scrub_checksum_super()
1885 if (spage->generation != btrfs_super_generation(s)) in scrub_checksum_super()
1888 if (!scrub_check_fsid(s->fsid, spage)) in scrub_checksum_super()
1909 btrfs_dev_stat_inc_and_print(spage->dev, in scrub_checksum_super()
1912 btrfs_dev_stat_inc_and_print(spage->dev, in scrub_checksum_super()
1938 static void scrub_page_get(struct scrub_page *spage) in scrub_page_get() argument
1940 atomic_inc(&spage->refs); in scrub_page_get()
1943 static void scrub_page_put(struct scrub_page *spage) in scrub_page_put() argument
1945 if (atomic_dec_and_test(&spage->refs)) { in scrub_page_put()
1946 if (spage->page) in scrub_page_put()
1947 __free_page(spage->page); in scrub_page_put()
1948 kfree(spage); in scrub_page_put()
1966 struct scrub_page *spage) in scrub_add_page_to_rd_bio() argument
1968 struct scrub_block *sblock = spage->sblock; in scrub_add_page_to_rd_bio()
1993 sbio->physical = spage->physical; in scrub_add_page_to_rd_bio()
1994 sbio->logical = spage->logical; in scrub_add_page_to_rd_bio()
1995 sbio->dev = spage->dev; in scrub_add_page_to_rd_bio()
2009 spage->physical || in scrub_add_page_to_rd_bio()
2011 spage->logical || in scrub_add_page_to_rd_bio()
2012 sbio->dev != spage->dev) { in scrub_add_page_to_rd_bio()
2017 sbio->pagev[sbio->page_count] = spage; in scrub_add_page_to_rd_bio()
2018 ret = bio_add_page(sbio->bio, spage->page, PAGE_SIZE, 0); in scrub_add_page_to_rd_bio()
2132 struct scrub_page *spage = sblock->pagev[i]; in scrub_missing_raid56_pages() local
2134 raid56_add_scrub_pages(rbio, spage->page, spage->logical); in scrub_missing_raid56_pages()
2176 struct scrub_page *spage; in scrub_pages() local
2179 spage = kzalloc(sizeof(*spage), GFP_KERNEL); in scrub_pages()
2180 if (!spage) { in scrub_pages()
2189 scrub_page_get(spage); in scrub_pages()
2190 sblock->pagev[index] = spage; in scrub_pages()
2191 spage->sblock = sblock; in scrub_pages()
2192 spage->dev = dev; in scrub_pages()
2193 spage->flags = flags; in scrub_pages()
2194 spage->generation = gen; in scrub_pages()
2195 spage->logical = logical; in scrub_pages()
2196 spage->physical = physical; in scrub_pages()
2197 spage->physical_for_dev_replace = physical_for_dev_replace; in scrub_pages()
2198 spage->mirror_num = mirror_num; in scrub_pages()
2200 spage->have_csum = 1; in scrub_pages()
2201 memcpy(spage->csum, csum, sctx->csum_size); in scrub_pages()
2203 spage->have_csum = 0; in scrub_pages()
2206 spage->page = alloc_page(GFP_KERNEL); in scrub_pages()
2207 if (!spage->page) in scrub_pages()
2224 struct scrub_page *spage = sblock->pagev[index]; in scrub_pages() local
2227 ret = scrub_add_page_to_rd_bio(sctx, spage); in scrub_pages()
2263 struct scrub_page *spage = sbio->pagev[i]; in scrub_bio_end_io_worker() local
2265 spage->io_error = 1; in scrub_bio_end_io_worker()
2266 spage->sblock->no_io_error_seen = 0; in scrub_bio_end_io_worker()
2272 struct scrub_page *spage = sbio->pagev[i]; in scrub_bio_end_io_worker() local
2273 struct scrub_block *sblock = spage->sblock; in scrub_bio_end_io_worker()
2483 struct scrub_page *spage; in scrub_pages_for_parity() local
2486 spage = kzalloc(sizeof(*spage), GFP_KERNEL); in scrub_pages_for_parity()
2487 if (!spage) { in scrub_pages_for_parity()
2497 scrub_page_get(spage); in scrub_pages_for_parity()
2498 sblock->pagev[index] = spage; in scrub_pages_for_parity()
2500 scrub_page_get(spage); in scrub_pages_for_parity()
2501 list_add_tail(&spage->list, &sparity->spages); in scrub_pages_for_parity()
2502 spage->sblock = sblock; in scrub_pages_for_parity()
2503 spage->dev = dev; in scrub_pages_for_parity()
2504 spage->flags = flags; in scrub_pages_for_parity()
2505 spage->generation = gen; in scrub_pages_for_parity()
2506 spage->logical = logical; in scrub_pages_for_parity()
2507 spage->physical = physical; in scrub_pages_for_parity()
2508 spage->mirror_num = mirror_num; in scrub_pages_for_parity()
2510 spage->have_csum = 1; in scrub_pages_for_parity()
2511 memcpy(spage->csum, csum, sctx->csum_size); in scrub_pages_for_parity()
2513 spage->have_csum = 0; in scrub_pages_for_parity()
2516 spage->page = alloc_page(GFP_KERNEL); in scrub_pages_for_parity()
2517 if (!spage->page) in scrub_pages_for_parity()
2526 struct scrub_page *spage = sblock->pagev[index]; in scrub_pages_for_parity() local
2529 ret = scrub_add_page_to_rd_bio(sctx, spage); in scrub_pages_for_parity()