Lines Matching defs:dpa

2324 dbuf_issue_final_prefetch(dbuf_prefetch_arg_t *dpa, blkptr_t *bp)
2330 dpa->dpa_aflags | ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH;
2332 ASSERT3U(dpa->dpa_curlevel, ==, BP_GET_LEVEL(bp));
2333 ASSERT3U(dpa->dpa_curlevel, ==, dpa->dpa_zb.zb_level);
2334 ASSERT(dpa->dpa_zio != NULL);
2335 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa, bp, NULL, NULL,
2336 dpa->dpa_prio, ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE,
2337 &aflags, &dpa->dpa_zb);
2348 dbuf_prefetch_arg_t *dpa = private;
2350 ASSERT3S(dpa->dpa_zb.zb_level, <, dpa->dpa_curlevel);
2351 ASSERT3S(dpa->dpa_curlevel, >, 0);
2365 ASSERT3S(BP_GET_LEVEL(zio->io_bp), ==, dpa->dpa_curlevel);
2371 ASSERT3P(zio->io_spa, ==, dpa->dpa_spa);
2373 dpa->dpa_dnode = NULL;
2374 } else if (dpa->dpa_dnode != NULL) {
2375 uint64_t curblkid = dpa->dpa_zb.zb_blkid >>
2376 (dpa->dpa_epbs * (dpa->dpa_curlevel -
2377 dpa->dpa_zb.zb_level));
2378 dmu_buf_impl_t *db = dbuf_hold_level(dpa->dpa_dnode,
2379 dpa->dpa_curlevel, curblkid, FTAG);
2385 dpa->dpa_curlevel--;
2387 uint64_t nextblkid = dpa->dpa_zb.zb_blkid >>
2388 (dpa->dpa_epbs * (dpa->dpa_curlevel - dpa->dpa_zb.zb_level));
2390 P2PHASE(nextblkid, 1ULL << dpa->dpa_epbs);
2392 kmem_free(dpa, sizeof (*dpa));
2393 } else if (dpa->dpa_curlevel == dpa->dpa_zb.zb_level) {
2394 ASSERT3U(nextblkid, ==, dpa->dpa_zb.zb_blkid);
2395 dbuf_issue_final_prefetch(dpa, bp);
2396 kmem_free(dpa, sizeof (*dpa));
2401 ASSERT3U(dpa->dpa_curlevel, ==, BP_GET_LEVEL(bp));
2403 SET_BOOKMARK(&zb, dpa->dpa_zb.zb_objset,
2404 dpa->dpa_zb.zb_object, dpa->dpa_curlevel, nextblkid);
2406 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa,
2407 bp, dbuf_prefetch_indirect_done, dpa, dpa->dpa_prio,
2498 dbuf_prefetch_arg_t *dpa = kmem_zalloc(sizeof (*dpa), KM_SLEEP);
2500 SET_BOOKMARK(&dpa->dpa_zb, ds != NULL ? ds->ds_object : DMU_META_OBJSET,
2502 dpa->dpa_curlevel = curlevel;
2503 dpa->dpa_prio = prio;
2504 dpa->dpa_aflags = aflags;
2505 dpa->dpa_spa = dn->dn_objset->os_spa;
2506 dpa->dpa_dnode = dn;
2507 dpa->dpa_epbs = epbs;
2508 dpa->dpa_zio = pio;
2519 dbuf_issue_final_prefetch(dpa, &bp);
2520 kmem_free(dpa, sizeof (*dpa));
2527 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa,
2528 &bp, dbuf_prefetch_indirect_done, dpa, prio,
2534 * dpa may have already been freed.