Lines Matching refs:spage
267 static void scrub_page_get(struct scrub_page *spage);
268 static void scrub_page_put(struct scrub_page *spage);
272 struct scrub_page *spage);
292 struct scrub_page *spage);
1522 struct scrub_page *spage) in scrub_check_fsid() argument
1524 struct btrfs_fs_devices *fs_devices = spage->dev->fs_devices; in scrub_check_fsid()
1635 struct scrub_page *spage = sblock->pagev[page_num]; in scrub_write_page_to_dev_replace() local
1637 BUG_ON(spage->page == NULL); in scrub_write_page_to_dev_replace()
1638 if (spage->io_error) { in scrub_write_page_to_dev_replace()
1639 void *mapped_buffer = kmap_atomic(spage->page); in scrub_write_page_to_dev_replace()
1642 flush_dcache_page(spage->page); in scrub_write_page_to_dev_replace()
1645 return scrub_add_page_to_wr_bio(sblock->sctx, spage); in scrub_write_page_to_dev_replace()
1649 struct scrub_page *spage) in scrub_add_page_to_wr_bio() argument
1671 sbio->physical = spage->physical_for_dev_replace; in scrub_add_page_to_wr_bio()
1672 sbio->logical = spage->logical; in scrub_add_page_to_wr_bio()
1690 spage->physical_for_dev_replace || in scrub_add_page_to_wr_bio()
1692 spage->logical) { in scrub_add_page_to_wr_bio()
1697 ret = bio_add_page(sbio->bio, spage->page, PAGE_SIZE, 0); in scrub_add_page_to_wr_bio()
1709 sbio->pagev[sbio->page_count] = spage; in scrub_add_page_to_wr_bio()
1710 scrub_page_get(spage); in scrub_add_page_to_wr_bio()
1763 struct scrub_page *spage = sbio->pagev[i]; in scrub_wr_bio_end_io_worker() local
1765 spage->io_error = 1; in scrub_wr_bio_end_io_worker()
2021 static void scrub_page_get(struct scrub_page *spage) in scrub_page_get() argument
2023 atomic_inc(&spage->refs); in scrub_page_get()
2026 static void scrub_page_put(struct scrub_page *spage) in scrub_page_put() argument
2028 if (atomic_dec_and_test(&spage->refs)) { in scrub_page_put()
2029 if (spage->page) in scrub_page_put()
2030 __free_page(spage->page); in scrub_page_put()
2031 kfree(spage); in scrub_page_put()
2049 struct scrub_page *spage) in scrub_add_page_to_rd_bio() argument
2051 struct scrub_block *sblock = spage->sblock; in scrub_add_page_to_rd_bio()
2076 sbio->physical = spage->physical; in scrub_add_page_to_rd_bio()
2077 sbio->logical = spage->logical; in scrub_add_page_to_rd_bio()
2078 sbio->dev = spage->dev; in scrub_add_page_to_rd_bio()
2093 spage->physical || in scrub_add_page_to_rd_bio()
2095 spage->logical || in scrub_add_page_to_rd_bio()
2096 sbio->dev != spage->dev) { in scrub_add_page_to_rd_bio()
2101 sbio->pagev[sbio->page_count] = spage; in scrub_add_page_to_rd_bio()
2102 ret = bio_add_page(sbio->bio, spage->page, PAGE_SIZE, 0); in scrub_add_page_to_rd_bio()
2217 struct scrub_page *spage = sblock->pagev[i]; in scrub_missing_raid56_pages() local
2219 raid56_add_scrub_pages(rbio, spage->page, spage->logical); in scrub_missing_raid56_pages()
2261 struct scrub_page *spage; in scrub_pages() local
2264 spage = kzalloc(sizeof(*spage), GFP_NOFS); in scrub_pages()
2265 if (!spage) { in scrub_pages()
2274 scrub_page_get(spage); in scrub_pages()
2275 sblock->pagev[index] = spage; in scrub_pages()
2276 spage->sblock = sblock; in scrub_pages()
2277 spage->dev = dev; in scrub_pages()
2278 spage->flags = flags; in scrub_pages()
2279 spage->generation = gen; in scrub_pages()
2280 spage->logical = logical; in scrub_pages()
2281 spage->physical = physical; in scrub_pages()
2282 spage->physical_for_dev_replace = physical_for_dev_replace; in scrub_pages()
2283 spage->mirror_num = mirror_num; in scrub_pages()
2285 spage->have_csum = 1; in scrub_pages()
2286 memcpy(spage->csum, csum, sctx->csum_size); in scrub_pages()
2288 spage->have_csum = 0; in scrub_pages()
2291 spage->page = alloc_page(GFP_NOFS); in scrub_pages()
2292 if (!spage->page) in scrub_pages()
2309 struct scrub_page *spage = sblock->pagev[index]; in scrub_pages() local
2312 ret = scrub_add_page_to_rd_bio(sctx, spage); in scrub_pages()
2348 struct scrub_page *spage = sbio->pagev[i]; in scrub_bio_end_io_worker() local
2350 spage->io_error = 1; in scrub_bio_end_io_worker()
2351 spage->sblock->no_io_error_seen = 0; in scrub_bio_end_io_worker()
2357 struct scrub_page *spage = sbio->pagev[i]; in scrub_bio_end_io_worker() local
2358 struct scrub_block *sblock = spage->sblock; in scrub_bio_end_io_worker()
2563 struct scrub_page *spage; in scrub_pages_for_parity() local
2566 spage = kzalloc(sizeof(*spage), GFP_NOFS); in scrub_pages_for_parity()
2567 if (!spage) { in scrub_pages_for_parity()
2577 scrub_page_get(spage); in scrub_pages_for_parity()
2578 sblock->pagev[index] = spage; in scrub_pages_for_parity()
2580 scrub_page_get(spage); in scrub_pages_for_parity()
2581 list_add_tail(&spage->list, &sparity->spages); in scrub_pages_for_parity()
2582 spage->sblock = sblock; in scrub_pages_for_parity()
2583 spage->dev = dev; in scrub_pages_for_parity()
2584 spage->flags = flags; in scrub_pages_for_parity()
2585 spage->generation = gen; in scrub_pages_for_parity()
2586 spage->logical = logical; in scrub_pages_for_parity()
2587 spage->physical = physical; in scrub_pages_for_parity()
2588 spage->mirror_num = mirror_num; in scrub_pages_for_parity()
2590 spage->have_csum = 1; in scrub_pages_for_parity()
2591 memcpy(spage->csum, csum, sctx->csum_size); in scrub_pages_for_parity()
2593 spage->have_csum = 0; in scrub_pages_for_parity()
2596 spage->page = alloc_page(GFP_NOFS); in scrub_pages_for_parity()
2597 if (!spage->page) in scrub_pages_for_parity()
2606 struct scrub_page *spage = sblock->pagev[index]; in scrub_pages_for_parity() local
2609 ret = scrub_add_page_to_rd_bio(sctx, spage); in scrub_pages_for_parity()
2765 struct scrub_page *spage; in scrub_parity_check_and_repair() local
2796 list_for_each_entry(spage, &sparity->spages, list) in scrub_parity_check_and_repair()
2797 raid56_add_scrub_pages(rbio, spage->page, spage->logical); in scrub_parity_check_and_repair()