Lines Matching refs:zfsvfs

49  * the zfsvfs->z_fuid_dirty flag is set to true and the caller will then
194 zfs_fuid_init(zfsvfs_t *zfsvfs)
196 rw_enter(&zfsvfs->z_fuid_lock, RW_WRITER);
198 if (zfsvfs->z_fuid_loaded) {
199 rw_exit(&zfsvfs->z_fuid_lock);
203 zfs_fuid_avl_tree_create(&zfsvfs->z_fuid_idx, &zfsvfs->z_fuid_domain);
205 (void) zap_lookup(zfsvfs->z_os, MASTER_NODE_OBJ,
206 ZFS_FUID_TABLES, 8, 1, &zfsvfs->z_fuid_obj);
207 if (zfsvfs->z_fuid_obj != 0) {
208 zfsvfs->z_fuid_size = zfs_fuid_table_load(zfsvfs->z_os,
209 zfsvfs->z_fuid_obj, &zfsvfs->z_fuid_idx,
210 &zfsvfs->z_fuid_domain);
213 zfsvfs->z_fuid_loaded = B_TRUE;
214 rw_exit(&zfsvfs->z_fuid_lock);
221 zfs_fuid_sync(zfsvfs_t *zfsvfs, dmu_tx_t *tx)
232 if (!zfsvfs->z_fuid_dirty) {
236 rw_enter(&zfsvfs->z_fuid_lock, RW_WRITER);
241 if (zfsvfs->z_fuid_obj == 0) {
242 zfsvfs->z_fuid_obj = dmu_object_alloc(zfsvfs->z_os,
245 VERIFY(zap_add(zfsvfs->z_os, MASTER_NODE_OBJ,
247 &zfsvfs->z_fuid_obj, tx) == 0);
252 numnodes = avl_numnodes(&zfsvfs->z_fuid_idx);
254 for (i = 0, domnode = avl_first(&zfsvfs->z_fuid_domain); domnode; i++,
255 domnode = AVL_NEXT(&zfsvfs->z_fuid_domain, domnode)) {
273 zfsvfs->z_fuid_size = nvsize;
274 dmu_write(zfsvfs->z_os, zfsvfs->z_fuid_obj, 0,
275 zfsvfs->z_fuid_size, packed, tx);
276 kmem_free(packed, zfsvfs->z_fuid_size);
277 VERIFY(0 == dmu_bonus_hold(zfsvfs->z_os, zfsvfs->z_fuid_obj,
280 *(uint64_t *)db->db_data = zfsvfs->z_fuid_size;
283 zfsvfs->z_fuid_dirty = B_FALSE;
284 rw_exit(&zfsvfs->z_fuid_lock);
291 * the zfsvfs->z_fuid_dirty flag will be set to TRUE. It will then be
296 zfs_fuid_find_by_domain(zfsvfs_t *zfsvfs, const char *domain,
317 if (!zfsvfs->z_fuid_loaded)
318 zfs_fuid_init(zfsvfs);
321 rw_enter(&zfsvfs->z_fuid_lock, rw);
322 findnode = avl_find(&zfsvfs->z_fuid_domain, &searchnode, &loc);
325 rw_exit(&zfsvfs->z_fuid_lock);
332 if (rw == RW_READER && !rw_tryupgrade(&zfsvfs->z_fuid_lock)) {
333 rw_exit(&zfsvfs->z_fuid_lock);
341 retidx = domnode->f_idx = avl_numnodes(&zfsvfs->z_fuid_idx) + 1;
343 avl_add(&zfsvfs->z_fuid_domain, domnode);
344 avl_add(&zfsvfs->z_fuid_idx, domnode);
345 zfsvfs->z_fuid_dirty = B_TRUE;
346 rw_exit(&zfsvfs->z_fuid_lock);
349 rw_exit(&zfsvfs->z_fuid_lock);
361 zfs_fuid_find_by_idx(zfsvfs_t *zfsvfs, uint32_t idx)
365 if (idx == 0 || !zfsvfs->z_use_fuids)
368 if (!zfsvfs->z_fuid_loaded)
369 zfs_fuid_init(zfsvfs);
371 rw_enter(&zfsvfs->z_fuid_lock, RW_READER);
373 if (zfsvfs->z_fuid_obj || zfsvfs->z_fuid_dirty)
374 domain = zfs_fuid_idx_domain(&zfsvfs->z_fuid_idx, idx);
377 rw_exit(&zfsvfs->z_fuid_lock);
391 zfs_fuid_map_id(zfsvfs_t *zfsvfs, uint64_t fuid,
401 domain = zfs_fuid_find_by_idx(zfsvfs, index);
493 zfs_fuid_create_cred(zfsvfs_t *zfsvfs, zfs_fuid_type_t type,
507 if (!zfsvfs->z_use_fuids || (ksid == NULL)) {
530 idx = zfs_fuid_find_by_domain(zfsvfs, domain, &kdomain, B_TRUE);
547 * attached to the zfsvfs of the file system.
550 zfs_fuid_create(zfsvfs_t *zfsvfs, uint64_t id, cred_t *cr,
570 if (!zfsvfs->z_use_fuids || !IS_EPHEMERAL(id) || fuid_idx != 0)
573 if (zfsvfs->z_replay) {
574 fuidp = zfsvfs->z_fuid_replay;
624 idx = zfs_fuid_find_by_domain(zfsvfs, domain, &kdomain, B_TRUE);
626 if (!zfsvfs->z_replay)
637 zfs_fuid_destroy(zfsvfs_t *zfsvfs)
639 rw_enter(&zfsvfs->z_fuid_lock, RW_WRITER);
640 if (!zfsvfs->z_fuid_loaded) {
641 rw_exit(&zfsvfs->z_fuid_lock);
644 zfs_fuid_table_destroy(&zfsvfs->z_fuid_idx, &zfsvfs->z_fuid_domain);
645 rw_exit(&zfsvfs->z_fuid_lock);
699 zfs_groupmember(zfsvfs_t *zfsvfs, uint64_t id, cred_t *cr)
725 domain = zfs_fuid_find_by_idx(zfsvfs, idx);
744 gid = zfs_fuid_map_id(zfsvfs, id, cr, ZFS_GROUP);
749 zfs_fuid_txhold(zfsvfs_t *zfsvfs, dmu_tx_t *tx)
751 if (zfsvfs->z_fuid_obj == 0) {
754 FUID_SIZE_ESTIMATE(zfsvfs));
757 dmu_tx_hold_bonus(tx, zfsvfs->z_fuid_obj);
758 dmu_tx_hold_write(tx, zfsvfs->z_fuid_obj, 0,
759 FUID_SIZE_ESTIMATE(zfsvfs));