Lines Matching refs:zf

102 dmu_zfetch_init(zfetch_t *zf, dnode_t *dno)
104 if (zf == NULL)
107 zf->zf_dnode = dno;
109 list_create(&zf->zf_stream, sizeof (zstream_t),
112 rw_init(&zf->zf_rwlock, NULL, RW_DEFAULT, NULL);
116 dmu_zfetch_stream_remove(zfetch_t *zf, zstream_t *zs)
118 ASSERT(RW_WRITE_HELD(&zf->zf_rwlock));
119 list_remove(&zf->zf_stream, zs);
129 dmu_zfetch_fini(zfetch_t *zf)
133 ASSERT(!RW_LOCK_HELD(&zf->zf_rwlock));
135 rw_enter(&zf->zf_rwlock, RW_WRITER);
136 while ((zs = list_head(&zf->zf_stream)) != NULL)
137 dmu_zfetch_stream_remove(zf, zs);
138 rw_exit(&zf->zf_rwlock);
139 list_destroy(&zf->zf_stream);
140 rw_destroy(&zf->zf_rwlock);
142 zf->zf_dnode = NULL;
152 dmu_zfetch_stream_create(zfetch_t *zf, uint64_t blkid)
157 ASSERT(RW_WRITE_HELD(&zf->zf_rwlock));
162 for (zstream_t *zs = list_head(&zf->zf_stream);
164 zs_next = list_next(&zf->zf_stream, zs);
167 dmu_zfetch_stream_remove(zf, zs);
181 zf->zf_dnode->dn_maxblkid * zf->zf_dnode->dn_datablksz /
195 list_insert_head(&zf->zf_stream, zs);
207 dmu_zfetch(zfetch_t *zf, uint64_t blkid, uint64_t nblks, boolean_t fetch_data)
225 rw_enter(&zf->zf_rwlock, RW_READER);
227 for (zs = list_head(&zf->zf_stream); zs != NULL;
228 zs = list_next(&zf->zf_stream, zs)) {
249 if (rw_tryupgrade(&zf->zf_rwlock))
250 dmu_zfetch_stream_create(zf, end_of_access_blkid);
251 rw_exit(&zf->zf_rwlock);
273 zfetch_max_distance >> zf->zf_dnode->dn_datablkshift;
295 max_dist_blks = zfetch_max_idistance >> zf->zf_dnode->dn_datablkshift;
308 epbs = zf->zf_dnode->dn_indblkshift - SPA_BLKPTRSHIFT;
315 rw_exit(&zf->zf_rwlock);
324 dbuf_prefetch(zf->zf_dnode, 0, pf_start + i,
328 dbuf_prefetch(zf->zf_dnode, 1, iblk,