Lines Matching defs:dpa
2034 dbuf_issue_final_prefetch(dbuf_prefetch_arg_t *dpa, blkptr_t *bp)
2040 dpa->dpa_aflags | ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH;
2042 ASSERT3U(dpa->dpa_curlevel, ==, BP_GET_LEVEL(bp));
2043 ASSERT3U(dpa->dpa_curlevel, ==, dpa->dpa_zb.zb_level);
2044 ASSERT(dpa->dpa_zio != NULL);
2045 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa, bp, NULL, NULL,
2046 dpa->dpa_prio, ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE,
2047 &aflags, &dpa->dpa_zb);
2058 dbuf_prefetch_arg_t *dpa = private;
2060 ASSERT3S(dpa->dpa_zb.zb_level, <, dpa->dpa_curlevel);
2061 ASSERT3S(dpa->dpa_curlevel, >, 0);
2063 ASSERT3S(BP_GET_LEVEL(zio->io_bp), ==, dpa->dpa_curlevel);
2065 ASSERT3P(zio->io_spa, ==, dpa->dpa_spa);
2068 dpa->dpa_curlevel--;
2070 uint64_t nextblkid = dpa->dpa_zb.zb_blkid >>
2071 (dpa->dpa_epbs * (dpa->dpa_curlevel - dpa->dpa_zb.zb_level));
2073 P2PHASE(nextblkid, 1ULL << dpa->dpa_epbs);
2075 kmem_free(dpa, sizeof (*dpa));
2076 } else if (dpa->dpa_curlevel == dpa->dpa_zb.zb_level) {
2077 ASSERT3U(nextblkid, ==, dpa->dpa_zb.zb_blkid);
2078 dbuf_issue_final_prefetch(dpa, bp);
2079 kmem_free(dpa, sizeof (*dpa));
2084 ASSERT3U(dpa->dpa_curlevel, ==, BP_GET_LEVEL(bp));
2086 SET_BOOKMARK(&zb, dpa->dpa_zb.zb_objset,
2087 dpa->dpa_zb.zb_object, dpa->dpa_curlevel, nextblkid);
2089 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa,
2090 bp, dbuf_prefetch_indirect_done, dpa, dpa->dpa_prio,
2180 dbuf_prefetch_arg_t *dpa = kmem_zalloc(sizeof (*dpa), KM_SLEEP);
2182 SET_BOOKMARK(&dpa->dpa_zb, ds != NULL ? ds->ds_object : DMU_META_OBJSET,
2184 dpa->dpa_curlevel = curlevel;
2185 dpa->dpa_prio = prio;
2186 dpa->dpa_aflags = aflags;
2187 dpa->dpa_spa = dn->dn_objset->os_spa;
2188 dpa->dpa_epbs = epbs;
2189 dpa->dpa_zio = pio;
2200 dbuf_issue_final_prefetch(dpa, &bp);
2201 kmem_free(dpa, sizeof (*dpa));
2208 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa,
2209 &bp, dbuf_prefetch_indirect_done, dpa, prio,
2215 * dpa may have already been freed.