Lines Matching refs:zfsvfs
193 zfs_fuid_init(zfsvfs_t *zfsvfs) in zfs_fuid_init() argument
195 rw_enter(&zfsvfs->z_fuid_lock, RW_WRITER); in zfs_fuid_init()
197 if (zfsvfs->z_fuid_loaded) { in zfs_fuid_init()
198 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_init()
202 zfs_fuid_avl_tree_create(&zfsvfs->z_fuid_idx, &zfsvfs->z_fuid_domain); in zfs_fuid_init()
204 (void) zap_lookup(zfsvfs->z_os, MASTER_NODE_OBJ, in zfs_fuid_init()
205 ZFS_FUID_TABLES, 8, 1, &zfsvfs->z_fuid_obj); in zfs_fuid_init()
206 if (zfsvfs->z_fuid_obj != 0) { in zfs_fuid_init()
207 zfsvfs->z_fuid_size = zfs_fuid_table_load(zfsvfs->z_os, in zfs_fuid_init()
208 zfsvfs->z_fuid_obj, &zfsvfs->z_fuid_idx, in zfs_fuid_init()
209 &zfsvfs->z_fuid_domain); in zfs_fuid_init()
212 zfsvfs->z_fuid_loaded = B_TRUE; in zfs_fuid_init()
213 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_init()
220 zfs_fuid_sync(zfsvfs_t *zfsvfs, dmu_tx_t *tx) in zfs_fuid_sync() argument
231 if (!zfsvfs->z_fuid_dirty) { in zfs_fuid_sync()
235 rw_enter(&zfsvfs->z_fuid_lock, RW_WRITER); in zfs_fuid_sync()
240 if (zfsvfs->z_fuid_obj == 0) { in zfs_fuid_sync()
241 zfsvfs->z_fuid_obj = dmu_object_alloc(zfsvfs->z_os, in zfs_fuid_sync()
244 VERIFY(zap_add(zfsvfs->z_os, MASTER_NODE_OBJ, in zfs_fuid_sync()
246 &zfsvfs->z_fuid_obj, tx) == 0); in zfs_fuid_sync()
251 numnodes = avl_numnodes(&zfsvfs->z_fuid_idx); in zfs_fuid_sync()
253 for (i = 0, domnode = avl_first(&zfsvfs->z_fuid_domain); domnode; i++, in zfs_fuid_sync()
254 domnode = AVL_NEXT(&zfsvfs->z_fuid_domain, domnode)) { in zfs_fuid_sync()
272 zfsvfs->z_fuid_size = nvsize; in zfs_fuid_sync()
273 dmu_write(zfsvfs->z_os, zfsvfs->z_fuid_obj, 0, in zfs_fuid_sync()
274 zfsvfs->z_fuid_size, packed, tx); in zfs_fuid_sync()
275 kmem_free(packed, zfsvfs->z_fuid_size); in zfs_fuid_sync()
276 VERIFY(0 == dmu_bonus_hold(zfsvfs->z_os, zfsvfs->z_fuid_obj, in zfs_fuid_sync()
279 *(uint64_t *)db->db_data = zfsvfs->z_fuid_size; in zfs_fuid_sync()
282 zfsvfs->z_fuid_dirty = B_FALSE; in zfs_fuid_sync()
283 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_sync()
295 zfs_fuid_find_by_domain(zfsvfs_t *zfsvfs, const char *domain, in zfs_fuid_find_by_domain() argument
316 if (!zfsvfs->z_fuid_loaded) in zfs_fuid_find_by_domain()
317 zfs_fuid_init(zfsvfs); in zfs_fuid_find_by_domain()
320 rw_enter(&zfsvfs->z_fuid_lock, rw); in zfs_fuid_find_by_domain()
321 findnode = avl_find(&zfsvfs->z_fuid_domain, &searchnode, &loc); in zfs_fuid_find_by_domain()
324 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_find_by_domain()
331 if (rw == RW_READER && !rw_tryupgrade(&zfsvfs->z_fuid_lock)) { in zfs_fuid_find_by_domain()
332 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_find_by_domain()
340 retidx = domnode->f_idx = avl_numnodes(&zfsvfs->z_fuid_idx) + 1; in zfs_fuid_find_by_domain()
342 avl_add(&zfsvfs->z_fuid_domain, domnode); in zfs_fuid_find_by_domain()
343 avl_add(&zfsvfs->z_fuid_idx, domnode); in zfs_fuid_find_by_domain()
344 zfsvfs->z_fuid_dirty = B_TRUE; in zfs_fuid_find_by_domain()
345 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_find_by_domain()
348 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_find_by_domain()
360 zfs_fuid_find_by_idx(zfsvfs_t *zfsvfs, uint32_t idx) in zfs_fuid_find_by_idx() argument
364 if (idx == 0 || !zfsvfs->z_use_fuids) in zfs_fuid_find_by_idx()
367 if (!zfsvfs->z_fuid_loaded) in zfs_fuid_find_by_idx()
368 zfs_fuid_init(zfsvfs); in zfs_fuid_find_by_idx()
370 rw_enter(&zfsvfs->z_fuid_lock, RW_READER); in zfs_fuid_find_by_idx()
372 if (zfsvfs->z_fuid_obj || zfsvfs->z_fuid_dirty) in zfs_fuid_find_by_idx()
373 domain = zfs_fuid_idx_domain(&zfsvfs->z_fuid_idx, idx); in zfs_fuid_find_by_idx()
376 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_find_by_idx()
393 zfs_fuid_map_id(zfsvfs_t *zfsvfs, uint64_t fuid, in zfs_fuid_map_id() argument
405 zfs_fuid_map_id(zfsvfs_t *zfsvfs, uint64_t fuid, in zfs_fuid_map_id() argument
416 zfs_fuid_map_id(zfsvfs_t *zfsvfs, uint64_t fuid, in zfs_fuid_map_id() argument
426 domain = zfs_fuid_find_by_idx(zfsvfs, index); in zfs_fuid_map_id()
516 zfs_fuid_create_cred(zfsvfs_t *zfsvfs, zfs_fuid_type_t type, in zfs_fuid_create_cred() argument
529 if (!zfsvfs->z_use_fuids || (ksid == NULL)) { in zfs_fuid_create_cred()
552 idx = zfs_fuid_find_by_domain(zfsvfs, domain, &kdomain, B_TRUE); in zfs_fuid_create_cred()
573 zfs_fuid_create(zfsvfs_t *zfsvfs, uint64_t id, cred_t *cr, in zfs_fuid_create() argument
593 if (!zfsvfs->z_use_fuids || !IS_EPHEMERAL(id) || fuid_idx != 0) in zfs_fuid_create()
596 if (zfsvfs->z_replay) { in zfs_fuid_create()
597 fuidp = zfsvfs->z_fuid_replay; in zfs_fuid_create()
647 idx = zfs_fuid_find_by_domain(zfsvfs, domain, &kdomain, B_TRUE); in zfs_fuid_create()
649 if (!zfsvfs->z_replay) in zfs_fuid_create()
666 zfs_fuid_destroy(zfsvfs_t *zfsvfs) in zfs_fuid_destroy() argument
668 rw_enter(&zfsvfs->z_fuid_lock, RW_WRITER); in zfs_fuid_destroy()
669 if (!zfsvfs->z_fuid_loaded) { in zfs_fuid_destroy()
670 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_destroy()
673 zfs_fuid_table_destroy(&zfsvfs->z_fuid_idx, &zfsvfs->z_fuid_domain); in zfs_fuid_destroy()
674 rw_exit(&zfsvfs->z_fuid_lock); in zfs_fuid_destroy()
724 zfs_groupmember(zfsvfs_t *zfsvfs, uint64_t id, cred_t *cr) in zfs_groupmember() argument
749 domain = zfs_fuid_find_by_idx(zfsvfs, idx); in zfs_groupmember()
768 gid = zfs_fuid_map_id(zfsvfs, id, cr, ZFS_GROUP); in zfs_groupmember()
773 zfs_fuid_txhold(zfsvfs_t *zfsvfs, dmu_tx_t *tx) in zfs_fuid_txhold() argument
775 if (zfsvfs->z_fuid_obj == 0) { in zfs_fuid_txhold()
778 FUID_SIZE_ESTIMATE(zfsvfs)); in zfs_fuid_txhold()
781 dmu_tx_hold_bonus(tx, zfsvfs->z_fuid_obj); in zfs_fuid_txhold()
782 dmu_tx_hold_write(tx, zfsvfs->z_fuid_obj, 0, in zfs_fuid_txhold()
783 FUID_SIZE_ESTIMATE(zfsvfs)); in zfs_fuid_txhold()
791 zfs_id_to_fuidstr(zfsvfs_t *zfsvfs, const char *domain, uid_t rid, in zfs_id_to_fuidstr() argument
798 domainid = zfs_fuid_find_by_domain(zfsvfs, domain, NULL, addok); in zfs_id_to_fuidstr()