Home | History | Annotate | Download | only in zfs

Lines Matching defs:dpa

2305 dbuf_issue_final_prefetch(dbuf_prefetch_arg_t *dpa, blkptr_t *bp)
2311 dpa->dpa_aflags | ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH;
2313 ASSERT3U(dpa->dpa_curlevel, ==, BP_GET_LEVEL(bp));
2314 ASSERT3U(dpa->dpa_curlevel, ==, dpa->dpa_zb.zb_level);
2315 ASSERT(dpa->dpa_zio != NULL);
2316 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa, bp, NULL, NULL,
2317 dpa->dpa_prio, ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE,
2318 &aflags, &dpa->dpa_zb);
2329 dbuf_prefetch_arg_t *dpa = private;
2331 ASSERT3S(dpa->dpa_zb.zb_level, <, dpa->dpa_curlevel);
2332 ASSERT3S(dpa->dpa_curlevel, >, 0);
2346 ASSERT3S(BP_GET_LEVEL(zio->io_bp), ==, dpa->dpa_curlevel);
2352 ASSERT3P(zio->io_spa, ==, dpa->dpa_spa);
2354 dpa->dpa_dnode = NULL;
2355 } else if (dpa->dpa_dnode != NULL) {
2356 uint64_t curblkid = dpa->dpa_zb.zb_blkid >>
2357 (dpa->dpa_epbs * (dpa->dpa_curlevel -
2358 dpa->dpa_zb.zb_level));
2359 dmu_buf_impl_t *db = dbuf_hold_level(dpa->dpa_dnode,
2360 dpa->dpa_curlevel, curblkid, FTAG);
2366 dpa->dpa_curlevel--;
2368 uint64_t nextblkid = dpa->dpa_zb.zb_blkid >>
2369 (dpa->dpa_epbs * (dpa->dpa_curlevel - dpa->dpa_zb.zb_level));
2371 P2PHASE(nextblkid, 1ULL << dpa->dpa_epbs);
2373 kmem_free(dpa, sizeof (*dpa));
2374 } else if (dpa->dpa_curlevel == dpa->dpa_zb.zb_level) {
2375 ASSERT3U(nextblkid, ==, dpa->dpa_zb.zb_blkid);
2376 dbuf_issue_final_prefetch(dpa, bp);
2377 kmem_free(dpa, sizeof (*dpa));
2382 ASSERT3U(dpa->dpa_curlevel, ==, BP_GET_LEVEL(bp));
2384 SET_BOOKMARK(&zb, dpa->dpa_zb.zb_objset,
2385 dpa->dpa_zb.zb_object, dpa->dpa_curlevel, nextblkid);
2387 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa,
2388 bp, dbuf_prefetch_indirect_done, dpa, dpa->dpa_prio,
2479 dbuf_prefetch_arg_t *dpa = kmem_zalloc(sizeof (*dpa), KM_SLEEP);
2481 SET_BOOKMARK(&dpa->dpa_zb, ds != NULL ? ds->ds_object : DMU_META_OBJSET,
2483 dpa->dpa_curlevel = curlevel;
2484 dpa->dpa_prio = prio;
2485 dpa->dpa_aflags = aflags;
2486 dpa->dpa_spa = dn->dn_objset->os_spa;
2487 dpa->dpa_dnode = dn;
2488 dpa->dpa_epbs = epbs;
2489 dpa->dpa_zio = pio;
2500 dbuf_issue_final_prefetch(dpa, &bp);
2501 kmem_free(dpa, sizeof (*dpa));
2508 (void) arc_read(dpa->dpa_zio, dpa->dpa_spa,
2509 &bp, dbuf_prefetch_indirect_done, dpa, prio,
2515 * dpa may have already been freed.