Lines Matching refs:aclp

455 	zfs_acl_t *aclp;
457 aclp = kmem_zalloc(sizeof (zfs_acl_t), KM_SLEEP);
458 list_create(&aclp->z_acl, sizeof (zfs_acl_node_t),
460 aclp->z_version = vers;
462 aclp->z_ops = zfs_acl_fuid_ops;
464 aclp->z_ops = zfs_acl_v0_ops;
465 return (aclp);
493 zfs_acl_release_nodes(zfs_acl_t *aclp)
497 while (aclnode = list_head(&aclp->z_acl)) {
498 list_remove(&aclp->z_acl, aclnode);
501 aclp->z_acl_count = 0;
502 aclp->z_acl_bytes = 0;
506 zfs_acl_free(zfs_acl_t *aclp)
508 zfs_acl_release_nodes(aclp);
509 list_destroy(&aclp->z_acl);
510 kmem_free(aclp, sizeof (zfs_acl_t));
536 zfs_ace_valid(vtype_t obj_type, zfs_acl_t *aclp, uint16_t type, uint16_t iflags)
550 if (aclp->z_version < ZFS_ACL_VERSION_FUID)
552 aclp->z_hints |= ZFS_ACL_OBJ_ACE;
561 aclp->z_hints |= ZFS_INHERIT_ACE;
574 zfs_acl_next_ace(zfs_acl_t *aclp, void *start, uint64_t *who,
579 ASSERT(aclp);
582 aclnode = list_head(&aclp->z_acl);
586 aclp->z_next_ace = aclnode->z_acldata;
587 aclp->z_curr_node = aclnode;
591 aclnode = aclp->z_curr_node;
597 aclnode = list_next(&aclp->z_acl, aclnode);
601 aclp->z_curr_node = aclnode;
603 aclp->z_next_ace = aclnode->z_acldata;
608 void *acep = aclp->z_next_ace;
614 ace_size = aclp->z_ops.ace_size(acep);
621 *iflags = aclp->z_ops.ace_flags_get(acep);
622 *type = aclp->z_ops.ace_type_get(acep);
623 *access_mask = aclp->z_ops.ace_mask_get(acep);
624 *who = aclp->z_ops.ace_who_get(acep);
625 aclp->z_next_ace = (caddr_t)aclp->z_next_ace + ace_size;
638 zfs_acl_t *aclp = datap;
642 acep = zfs_acl_next_ace(aclp, acep, &who, mask,
648 zfs_acl_curr_node(zfs_acl_t *aclp)
650 ASSERT(aclp->z_curr_node);
651 return (aclp->z_curr_node);
660 zfs_copy_ace_2_fuid(zfsvfs_t *zfsvfs, vtype_t obj_type, zfs_acl_t *aclp,
686 if (zfs_ace_valid(obj_type, aclp, aceptr->z_hdr.z_type,
710 aclp->z_ops.ace_size(aceptr));
722 zfs_copy_fuid_2_ace(zfsvfs_t *zfsvfs, zfs_acl_t *aclp, cred_t *cr,
735 while (zacep = zfs_acl_next_ace(aclp, zacep,
779 zfs_copy_ace_2_oldace(vtype_t obj_type, zfs_acl_t *aclp, ace_t *acep,
793 if (zfs_ace_valid(obj_type, aclp, aceptr->z_type,
805 zfs_acl_xform(znode_t *zp, zfs_acl_t *aclp, cred_t *cr)
815 ASSERT(aclp->z_version == ZFS_ACL_VERSION_INITIAL);
823 oldaclp = kmem_alloc(sizeof (zfs_oldace_t) * aclp->z_acl_count,
826 while (cookie = zfs_acl_next_ace(aclp, cookie, &who,
834 newaclnode = zfs_acl_node_alloc(aclp->z_acl_count *
836 aclp->z_ops = zfs_acl_fuid_ops;
837 VERIFY(zfs_copy_ace_2_fuid(zp->z_zfsvfs, ZTOV(zp)->v_type, aclp,
838 oldaclp, newaclnode->z_acldata, aclp->z_acl_count,
840 newaclnode->z_ace_count = aclp->z_acl_count;
841 aclp->z_version = ZFS_ACL_VERSION;
842 kmem_free(oldaclp, aclp->z_acl_count * sizeof (zfs_oldace_t));
848 zfs_acl_release_nodes(aclp);
850 list_insert_head(&aclp->z_acl, newaclnode);
852 aclp->z_acl_bytes = newaclnode->z_size;
853 aclp->z_acl_count = newaclnode->z_ace_count;
875 zfs_set_ace(zfs_acl_t *aclp, void *acep, uint32_t access_mask,
880 aclp->z_ops.ace_mask_set(acep, access_mask);
881 aclp->z_ops.ace_type_set(acep, access_type);
882 aclp->z_ops.ace_flags_set(acep, entry_type);
885 aclp->z_ops.ace_who_set(acep, fuid);
892 zfs_mode_compute(uint64_t fmode, zfs_acl_t *aclp,
906 while (acep = zfs_acl_next_ace(aclp, acep, &who,
1064 zfs_acl_t *aclp;
1098 aclp = zfs_acl_alloc(version);
1100 aclp->z_acl_count = acl_count;
1101 aclp->z_acl_bytes = aclsize;
1104 aclnode->z_ace_count = aclp->z_acl_count;
1122 zfs_acl_free(aclp);
1130 list_insert_head(&aclp->z_acl, aclnode);
1132 *aclpp = aclp;
1134 zp->z_acl_cached = aclp;
1162 zfs_acl_t *aclp;
1167 if ((error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE)) == 0)
1168 zp->z_mode = zfs_mode_compute(zp->z_mode, aclp,
1181 zfs_aclset_common(znode_t *zp, zfs_acl_t *aclp, cred_t *cr, dmu_tx_t *tx)
1194 mode = zfs_mode_compute(mode, aclp, &zp->z_pflags,
1216 if ((aclp->z_version == ZFS_ACL_VERSION_INITIAL) &&
1218 zfs_acl_xform(zp, aclp, cr);
1219 ASSERT(aclp->z_version >= ZFS_ACL_VERSION_FUID);
1229 locate.cb_aclp = aclp;
1231 zfs_acl_data_locator, &locate, aclp->z_acl_bytes);
1233 NULL, &aclp->z_acl_count, sizeof (uint64_t));
1246 if (aclp->z_acl_bytes > ZFS_ACE_SPACE) {
1253 aclp->z_version != acl_phys.z_acl_version) {
1261 otype, aclp->z_acl_bytes,
1268 aoid, aclp->z_acl_bytes, 0, tx);
1271 for (aclnode = list_head(&aclp->z_acl); aclnode;
1272 aclnode = list_next(&aclp->z_acl, aclnode)) {
1292 for (aclnode = list_head(&aclp->z_acl); aclnode;
1293 aclnode = list_next(&aclp->z_acl, aclnode)) {
1305 if (aclp->z_version == ZFS_ACL_VERSION_INITIAL) {
1306 acl_phys.z_acl_size = aclp->z_acl_count;
1307 acl_phys.z_acl_count = aclp->z_acl_bytes;
1309 acl_phys.z_acl_size = aclp->z_acl_bytes;
1310 acl_phys.z_acl_count = aclp->z_acl_count;
1312 acl_phys.z_acl_version = aclp->z_version;
1323 zp->z_pflags |= aclp->z_hints;
1325 if (ace_trivial_common(aclp, 0, zfs_ace_walk) == 0)
1334 zfs_acl_t *aclp)
1344 size_t abstract_size = aclp->z_ops.ace_abstract_size();
1355 newnode = zfs_acl_node_alloc((abstract_size * 6) + aclp->z_acl_bytes);
1359 zfs_set_ace(aclp, zacep, masks.allow0, ALLOW, -1, ACE_OWNER);
1365 zfs_set_ace(aclp, zacep, masks.deny1, DENY, -1, ACE_OWNER);
1371 zfs_set_ace(aclp, zacep, masks.deny2, DENY, -1, OWNING_GROUP);
1377 while (acep = zfs_acl_next_ace(aclp, acep, &who, &access_mask,
1409 aclp->z_hints |= ZFS_INHERIT_ACE;
1418 aclp->z_hints |= ZFS_ACL_OBJ_ACE;
1431 zfs_set_ace(aclp, zacep, access_mask, type, who, iflags);
1432 ace_size = aclp->z_ops.ace_size(acep);
1437 zfs_set_ace(aclp, zacep, masks.owner, ALLOW, -1, ACE_OWNER);
1439 zfs_set_ace(aclp, zacep, masks.group, ALLOW, -1, OWNING_GROUP);
1441 zfs_set_ace(aclp, zacep, masks.everyone, ALLOW, -1, ACE_EVERYONE);
1445 zfs_acl_release_nodes(aclp);
1446 aclp->z_acl_count = new_count;
1447 aclp->z_acl_bytes = new_bytes;
1450 list_insert_tail(&aclp->z_acl, newnode);
1454 zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode)
1461 *aclp = zfs_acl_alloc(zfs_acl_version_zp(zp));
1463 error = zfs_acl_node_read(zp, B_TRUE, aclp, B_TRUE);
1466 (*aclp)->z_hints = zp->z_pflags & V4_ACL_WIDE_FLAGS;
1468 (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_GROUPMASK), *aclp);
1502 zfs_acl_t *aclp = NULL;
1512 aclp = zfs_acl_alloc(paclp->z_version);
1515 return (aclp);
1550 ace_size = aclp->z_ops.ace_size(pacep);
1552 list_insert_tail(&aclp->z_acl, aclnode);
1555 zfs_set_ace(aclp, acep, access_mask, type,
1562 VERIFY((data2sz = aclp->z_ops.ace_data(acep,
1567 aclp->z_acl_count++;
1569 aclp->z_acl_bytes += aclnode->z_size;
1570 newflags = aclp->z_ops.ace_flags_get(acep);
1578 aclp->z_ops.ace_flags_set(acep,
1586 aclp->z_hints |= ZFS_INHERIT_ACE;
1595 aclp->z_ops.ace_flags_set(acep,
1599 aclp->z_ops.ace_flags_set(acep,
1604 return (aclp);
1768 zfs_acl_t *aclp;
1785 error = zfs_acl_node_read(zp, B_FALSE, &aclp, B_FALSE);
1800 while (zacep = zfs_acl_next_ace(aclp, zacep,
1815 count = (int)aclp->z_acl_count;
1830 if (aclp->z_version == ZFS_ACL_VERSION_FUID)
1831 zfs_copy_fuid_2_ace(zp->z_zfsvfs, aclp, cr,
1837 for (aclnode = list_head(&aclp->z_acl); aclnode;
1838 aclnode = list_next(&aclp->z_acl, aclnode)) {
1844 aclp->z_acl_bytes);
1866 zfs_acl_t *aclp;
1874 aclp = zfs_acl_alloc(zfs_acl_version(zfsvfs->z_version));
1876 aclp->z_hints = 0;
1878 if (aclp->z_version == ZFS_ACL_VERSION_INITIAL) {
1879 if ((error = zfs_copy_ace_2_oldace(obj_type, aclp,
1882 zfs_acl_free(aclp);
1887 if ((error = zfs_copy_ace_2_fuid(zfsvfs, obj_type, aclp,
1890 zfs_acl_free(aclp);
1895 aclp->z_acl_bytes = aclnode->z_size;
1897 aclp->z_acl_count = aclcnt;
1898 list_insert_head(&aclp->z_acl, aclnode);
1905 aclp->z_hints |= ZFS_ACL_PROTECTED;
1907 aclp->z_hints |= ZFS_ACL_DEFAULTED;
1909 aclp->z_hints |= ZFS_ACL_AUTO_INHERIT;
1912 *zaclp = aclp;
1928 zfs_acl_t *aclp;
1943 &aclp);
1952 aclp->z_hints |=
1978 aclp->z_acl_bytes);
1980 dmu_tx_hold_write(tx, acl_obj, 0, aclp->z_acl_bytes);
1982 } else if (!zp->z_is_sa && aclp->z_acl_bytes > ZFS_ACE_SPACE) {
1983 dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, aclp->z_acl_bytes);
1998 zfs_acl_free(aclp);
2002 error = zfs_aclset_common(zp, aclp, cr, tx);
2005 zp->z_acl_cached = aclp;
2091 zfs_acl_t *aclp;
2108 error = zfs_acl_node_read(zp, B_FALSE, &aclp, B_FALSE);
2116 while (acep = zfs_acl_next_ace(aclp, acep, &who, &access_mask,