Lines Matching defs:zf
188 dmu_zfetch_init(zfetch_t *zf, dnode_t *dno)
190 if (zf == NULL)
192 zf->zf_dnode = dno;
193 zf->zf_numstreams = 0;
195 list_create(&zf->zf_stream, sizeof (zstream_t),
198 mutex_init(&zf->zf_lock, NULL, MUTEX_DEFAULT, NULL);
211 dmu_zfetch_stream_remove(zfetch_t *zf, zstream_t *zs)
213 ASSERT(MUTEX_HELD(&zf->zf_lock));
214 list_remove(&zf->zf_stream, zs);
215 zf->zf_numstreams--;
226 dmu_zfetch_fini(zfetch_t *zf)
230 mutex_enter(&zf->zf_lock);
231 while ((zs = list_head(&zf->zf_stream)) != NULL)
232 dmu_zfetch_stream_remove(zf, zs);
233 mutex_exit(&zf->zf_lock);
234 list_destroy(&zf->zf_stream);
235 mutex_destroy(&zf->zf_lock);
237 zf->zf_dnode = NULL;
247 dmu_zfetch_stream_create(zfetch_t *zf, uint64_t blkid)
252 ASSERT(MUTEX_HELD(&zf->zf_lock));
258 for (zs = list_head(&zf->zf_stream); zs != NULL; zs = zs_next) {
259 zs_next = list_next(&zf->zf_stream, zs);
268 dmu_zfetch_stream_remove(zf, zs);
274 list_remove(&zf->zf_stream, zs);
284 (zf->zf_dnode->dn_maxblkid << zf->zf_dnode->dn_datablkshift) /
286 if (zf->zf_numstreams >= max_streams) {
288 for (zs = list_head(&zf->zf_stream); zs != NULL;
289 zs = list_next(&zf->zf_stream, zs)) {
300 list_remove(&zf->zf_stream, zs);
312 zf->zf_numstreams++;
315 list_insert_head(&zf->zf_stream, zs);
469 dmu_zfetch_prepare(zfetch_t *zf, uint64_t blkid, uint64_t nblks,
473 spa_t *spa = zf->zf_dnode->dn_objset->os_spa;
474 zfs_prefetch_type_t os_prefetch = zf->zf_dnode->dn_objset->os_prefetch;
501 rw_enter(&zf->zf_dnode->dn_struct_rwlock, RW_READER);
507 uint64_t maxblkid = zf->zf_dnode->dn_maxblkid;
510 rw_exit(&zf->zf_dnode->dn_struct_rwlock);
513 mutex_enter(&zf->zf_lock);
520 unsigned int dbs = zf->zf_dnode->dn_datablkshift;
522 for (zs = list_head(&zf->zf_stream); zs != NULL;
523 zs = list_next(&zf->zf_stream, zs)) {
542 for (zs = list_head(&zf->zf_stream); zs != NULL;
543 zs = list_next(&zf->zf_stream, zs)) {
577 dmu_zfetch_stream_create(zf, end_blkid);
578 mutex_exit(&zf->zf_lock);
597 dmu_zfetch_stream_remove(zf, zs);
599 mutex_exit(&zf->zf_lock);
601 rw_exit(&zf->zf_dnode->dn_struct_rwlock);
661 mutex_exit(&zf->zf_lock);
673 int epbs = zf->zf_dnode->dn_indblkshift - SPA_BLKPTRSHIFT;
679 issued += dbuf_prefetch(zf->zf_dnode, 1, iblk,
684 rw_exit(&zf->zf_dnode->dn_struct_rwlock);
691 dmu_zfetch_run(zfetch_t *zf, zstream_t *zs, boolean_t missed,
712 mutex_enter(&zf->zf_lock);
721 mutex_exit(&zf->zf_lock);
725 epbs = zf->zf_dnode->dn_indblkshift - SPA_BLKPTRSHIFT;
742 rw_enter(&zf->zf_dnode->dn_struct_rwlock, RW_READER);
746 issued += dbuf_prefetch_impl(zf->zf_dnode, 0, blk,
750 issued += dbuf_prefetch_impl(zf->zf_dnode, 1, iblk,
755 rw_exit(&zf->zf_dnode->dn_struct_rwlock);
762 dmu_zfetch(zfetch_t *zf, uint64_t blkid, uint64_t nblks, boolean_t fetch_data,
767 zs = dmu_zfetch_prepare(zf, blkid, nblks, fetch_data, have_lock);
769 dmu_zfetch_run(zf, zs, missed, have_lock);