Lines Matching refs:dpa
2608 dbuf_prefetch_fini(dbuf_prefetch_arg_t *dpa, boolean_t io_done) in dbuf_prefetch_fini() argument
2610 if (dpa->dpa_cb != NULL) in dbuf_prefetch_fini()
2611 dpa->dpa_cb(dpa->dpa_arg, io_done); in dbuf_prefetch_fini()
2612 kmem_free(dpa, sizeof (*dpa)); in dbuf_prefetch_fini()
2619 dbuf_prefetch_arg_t *dpa = private; in dbuf_issue_final_prefetch_done() local
2621 dbuf_prefetch_fini(dpa, B_TRUE); in dbuf_issue_final_prefetch_done()
2630 dbuf_issue_final_prefetch(dbuf_prefetch_arg_t *dpa, blkptr_t *bp) in dbuf_issue_final_prefetch() argument
2633 return (dbuf_prefetch_fini(dpa, B_FALSE)); in dbuf_issue_final_prefetch()
2637 dpa->dpa_aflags | ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH; in dbuf_issue_final_prefetch()
2641 dpa->dpa_curlevel == 0) in dbuf_issue_final_prefetch()
2644 ASSERT3U(dpa->dpa_curlevel, ==, BP_GET_LEVEL(bp)); in dbuf_issue_final_prefetch()
2645 ASSERT3U(dpa->dpa_curlevel, ==, dpa->dpa_zb.zb_level); in dbuf_issue_final_prefetch()
2646 ASSERT(dpa->dpa_zio != NULL); in dbuf_issue_final_prefetch()
2647 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa, bp, in dbuf_issue_final_prefetch()
2648 dbuf_issue_final_prefetch_done, dpa, in dbuf_issue_final_prefetch()
2649 dpa->dpa_prio, zio_flags, &aflags, &dpa->dpa_zb); in dbuf_issue_final_prefetch()
2662 dbuf_prefetch_arg_t *dpa = private; in dbuf_prefetch_indirect_done() local
2664 ASSERT3S(dpa->dpa_zb.zb_level, <, dpa->dpa_curlevel); in dbuf_prefetch_indirect_done()
2665 ASSERT3S(dpa->dpa_curlevel, >, 0); in dbuf_prefetch_indirect_done()
2669 return (dbuf_prefetch_fini(dpa, B_TRUE)); in dbuf_prefetch_indirect_done()
2685 ASSERT3S(BP_GET_LEVEL(zio->io_bp), ==, dpa->dpa_curlevel); in dbuf_prefetch_indirect_done()
2691 ASSERT3P(zio->io_spa, ==, dpa->dpa_spa); in dbuf_prefetch_indirect_done()
2693 dpa->dpa_dnode = NULL; in dbuf_prefetch_indirect_done()
2694 } else if (dpa->dpa_dnode != NULL) { in dbuf_prefetch_indirect_done()
2695 uint64_t curblkid = dpa->dpa_zb.zb_blkid >> in dbuf_prefetch_indirect_done()
2696 (dpa->dpa_epbs * (dpa->dpa_curlevel - in dbuf_prefetch_indirect_done()
2697 dpa->dpa_zb.zb_level)); in dbuf_prefetch_indirect_done()
2698 dmu_buf_impl_t *db = dbuf_hold_level(dpa->dpa_dnode, in dbuf_prefetch_indirect_done()
2699 dpa->dpa_curlevel, curblkid, FTAG); in dbuf_prefetch_indirect_done()
2702 return (dbuf_prefetch_fini(dpa, B_TRUE)); in dbuf_prefetch_indirect_done()
2709 dpa->dpa_curlevel--; in dbuf_prefetch_indirect_done()
2710 uint64_t nextblkid = dpa->dpa_zb.zb_blkid >> in dbuf_prefetch_indirect_done()
2711 (dpa->dpa_epbs * (dpa->dpa_curlevel - dpa->dpa_zb.zb_level)); in dbuf_prefetch_indirect_done()
2713 P2PHASE(nextblkid, 1ULL << dpa->dpa_epbs); in dbuf_prefetch_indirect_done()
2716 dbuf_prefetch_fini(dpa, B_TRUE); in dbuf_prefetch_indirect_done()
2717 } else if (dpa->dpa_curlevel == dpa->dpa_zb.zb_level) { in dbuf_prefetch_indirect_done()
2718 ASSERT3U(nextblkid, ==, dpa->dpa_zb.zb_blkid); in dbuf_prefetch_indirect_done()
2719 dbuf_issue_final_prefetch(dpa, bp); in dbuf_prefetch_indirect_done()
2725 if (dpa->dpa_aflags & ARC_FLAG_L2CACHE) in dbuf_prefetch_indirect_done()
2728 ASSERT3U(dpa->dpa_curlevel, ==, BP_GET_LEVEL(bp)); in dbuf_prefetch_indirect_done()
2730 SET_BOOKMARK(&zb, dpa->dpa_zb.zb_objset, in dbuf_prefetch_indirect_done()
2731 dpa->dpa_zb.zb_object, dpa->dpa_curlevel, nextblkid); in dbuf_prefetch_indirect_done()
2733 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa, in dbuf_prefetch_indirect_done()
2734 bp, dbuf_prefetch_indirect_done, dpa, dpa->dpa_prio, in dbuf_prefetch_indirect_done()
2827 dbuf_prefetch_arg_t *dpa = kmem_zalloc(sizeof (*dpa), KM_SLEEP); in dbuf_prefetch_impl() local
2829 SET_BOOKMARK(&dpa->dpa_zb, ds != NULL ? ds->ds_object : DMU_META_OBJSET, in dbuf_prefetch_impl()
2831 dpa->dpa_curlevel = curlevel; in dbuf_prefetch_impl()
2832 dpa->dpa_prio = prio; in dbuf_prefetch_impl()
2833 dpa->dpa_aflags = aflags; in dbuf_prefetch_impl()
2834 dpa->dpa_spa = dn->dn_objset->os_spa; in dbuf_prefetch_impl()
2835 dpa->dpa_dnode = dn; in dbuf_prefetch_impl()
2836 dpa->dpa_epbs = epbs; in dbuf_prefetch_impl()
2837 dpa->dpa_zio = pio; in dbuf_prefetch_impl()
2838 dpa->dpa_cb = cb; in dbuf_prefetch_impl()
2839 dpa->dpa_arg = arg; in dbuf_prefetch_impl()
2843 dpa->dpa_aflags |= ARC_FLAG_L2CACHE; in dbuf_prefetch_impl()
2854 dbuf_issue_final_prefetch(dpa, &bp); in dbuf_prefetch_impl()
2865 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa, in dbuf_prefetch_impl()
2866 &bp, dbuf_prefetch_indirect_done, dpa, prio, in dbuf_prefetch_impl()