Lines Matching refs:aclp
463 zfs_acl_t *aclp; in zfs_acl_alloc() local
465 aclp = kmem_zalloc(sizeof (zfs_acl_t), KM_SLEEP); in zfs_acl_alloc()
466 list_create(&aclp->z_acl, sizeof (zfs_acl_node_t), in zfs_acl_alloc()
468 aclp->z_version = vers; in zfs_acl_alloc()
470 aclp->z_ops = zfs_acl_fuid_ops; in zfs_acl_alloc()
472 aclp->z_ops = zfs_acl_v0_ops; in zfs_acl_alloc()
473 return (aclp); in zfs_acl_alloc()
501 zfs_acl_release_nodes(zfs_acl_t *aclp) in zfs_acl_release_nodes() argument
505 while (aclnode = list_head(&aclp->z_acl)) { in zfs_acl_release_nodes()
506 list_remove(&aclp->z_acl, aclnode); in zfs_acl_release_nodes()
509 aclp->z_acl_count = 0; in zfs_acl_release_nodes()
510 aclp->z_acl_bytes = 0; in zfs_acl_release_nodes()
514 zfs_acl_free(zfs_acl_t *aclp) in zfs_acl_free() argument
516 zfs_acl_release_nodes(aclp); in zfs_acl_free()
517 list_destroy(&aclp->z_acl); in zfs_acl_free()
518 kmem_free(aclp, sizeof (zfs_acl_t)); in zfs_acl_free()
544 zfs_ace_valid(vtype_t obj_type, zfs_acl_t *aclp, uint16_t type, uint16_t iflags) in zfs_ace_valid() argument
558 if (aclp->z_version < ZFS_ACL_VERSION_FUID) in zfs_ace_valid()
560 aclp->z_hints |= ZFS_ACL_OBJ_ACE; in zfs_ace_valid()
569 aclp->z_hints |= ZFS_INHERIT_ACE; in zfs_ace_valid()
589 zfs_acl_t *aclp = zaip->zai_aclp; in zfs_acl_next_ace() local
592 ASSERT(aclp); in zfs_acl_next_ace()
595 aclnode = list_head(&aclp->z_acl); in zfs_acl_next_ace()
611 aclnode = list_next(&aclp->z_acl, aclnode); in zfs_acl_next_ace()
626 ace_size = aclp->z_ops.ace_size(acep); in zfs_acl_next_ace()
630 DTRACE_PROBE3(acl__size__error, zfs_acl_t *, aclp, in zfs_acl_next_ace()
635 *iflags = aclp->z_ops.ace_flags_get(acep); in zfs_acl_next_ace()
636 *type = aclp->z_ops.ace_type_get(acep); in zfs_acl_next_ace()
637 *access_mask = aclp->z_ops.ace_mask_get(acep); in zfs_acl_next_ace()
638 *who = aclp->z_ops.ace_who_get(acep); in zfs_acl_next_ace()
668 zfs_copy_ace_2_fuid(zfsvfs_t *zfsvfs, vtype_t obj_type, zfs_acl_t *aclp, in zfs_copy_ace_2_fuid() argument
694 if (zfs_ace_valid(obj_type, aclp, aceptr->z_hdr.z_type, in zfs_copy_ace_2_fuid()
718 aclp->z_ops.ace_size(aceptr)); in zfs_copy_ace_2_fuid()
730 zfs_copy_fuid_2_ace(zfsvfs_t *zfsvfs, zfs_acl_t *aclp, cred_t *cr, in zfs_copy_fuid_2_ace() argument
744 zai.zai_aclp = aclp; in zfs_copy_fuid_2_ace()
789 zfs_copy_ace_2_oldace(vtype_t obj_type, zfs_acl_t *aclp, ace_t *acep, in zfs_copy_ace_2_oldace() argument
803 if (zfs_ace_valid(obj_type, aclp, aceptr->z_type, in zfs_copy_ace_2_oldace()
815 zfs_acl_xform(znode_t *zp, zfs_acl_t *aclp, cred_t *cr) in zfs_acl_xform() argument
826 ASSERT(aclp->z_version == ZFS_ACL_VERSION_INITIAL); in zfs_acl_xform()
834 oldaclp = kmem_alloc(sizeof (zfs_oldace_t) * aclp->z_acl_count, in zfs_acl_xform()
838 zai.zai_aclp = aclp; in zfs_acl_xform()
847 newaclnode = zfs_acl_node_alloc(aclp->z_acl_count * in zfs_acl_xform()
849 aclp->z_ops = zfs_acl_fuid_ops; in zfs_acl_xform()
850 VERIFY(zfs_copy_ace_2_fuid(zp->z_zfsvfs, ZTOV(zp)->v_type, aclp, in zfs_acl_xform()
851 oldaclp, newaclnode->z_acldata, aclp->z_acl_count, in zfs_acl_xform()
853 newaclnode->z_ace_count = aclp->z_acl_count; in zfs_acl_xform()
854 aclp->z_version = ZFS_ACL_VERSION; in zfs_acl_xform()
855 kmem_free(oldaclp, aclp->z_acl_count * sizeof (zfs_oldace_t)); in zfs_acl_xform()
861 zfs_acl_release_nodes(aclp); in zfs_acl_xform()
863 list_insert_head(&aclp->z_acl, newaclnode); in zfs_acl_xform()
865 aclp->z_acl_bytes = newaclnode->z_size; in zfs_acl_xform()
866 aclp->z_acl_count = newaclnode->z_ace_count; in zfs_acl_xform()
888 zfs_set_ace(zfs_acl_t *aclp, void *acep, uint32_t access_mask, in zfs_set_ace() argument
893 aclp->z_ops.ace_mask_set(acep, access_mask); in zfs_set_ace()
894 aclp->z_ops.ace_type_set(acep, access_type); in zfs_set_ace()
895 aclp->z_ops.ace_flags_set(acep, entry_type); in zfs_set_ace()
898 aclp->z_ops.ace_who_set(acep, fuid); in zfs_set_ace()
905 zfs_mode_compute(uint64_t fmode, zfs_acl_t *aclp, in zfs_mode_compute() argument
920 zai.zai_aclp = aclp; in zfs_mode_compute()
1079 zfs_acl_t *aclp; in zfs_acl_node_read() local
1113 aclp = zfs_acl_alloc(version); in zfs_acl_node_read()
1115 aclp->z_acl_count = acl_count; in zfs_acl_node_read()
1116 aclp->z_acl_bytes = aclsize; in zfs_acl_node_read()
1119 aclnode->z_ace_count = aclp->z_acl_count; in zfs_acl_node_read()
1137 zfs_acl_free(aclp); in zfs_acl_node_read()
1145 list_insert_head(&aclp->z_acl, aclnode); in zfs_acl_node_read()
1147 *aclpp = aclp; in zfs_acl_node_read()
1149 zp->z_acl_cached = aclp; in zfs_acl_node_read()
1177 zfs_acl_t *aclp; in zfs_acl_chown_setattr() local
1182 if ((error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE)) == 0) in zfs_acl_chown_setattr()
1183 zp->z_mode = zfs_mode_compute(zp->z_mode, aclp, in zfs_acl_chown_setattr()
1196 zfs_aclset_common(znode_t *zp, zfs_acl_t *aclp, cred_t *cr, dmu_tx_t *tx) in zfs_aclset_common() argument
1219 mode = zfs_mode_compute(mode, aclp, &zp->z_pflags, in zfs_aclset_common()
1241 if ((aclp->z_version == ZFS_ACL_VERSION_INITIAL) && in zfs_aclset_common()
1243 zfs_acl_xform(zp, aclp, cr); in zfs_aclset_common()
1244 ASSERT(aclp->z_version >= ZFS_ACL_VERSION_FUID); in zfs_aclset_common()
1254 locate.cb_aclp = aclp; in zfs_aclset_common()
1256 zfs_acl_data_locator, &locate, aclp->z_acl_bytes); in zfs_aclset_common()
1258 NULL, &aclp->z_acl_count, sizeof (uint64_t)); in zfs_aclset_common()
1270 if (aclp->z_acl_bytes > ZFS_ACE_SPACE) { in zfs_aclset_common()
1277 aclp->z_version != acl_phys.z_acl_version) { in zfs_aclset_common()
1285 otype, aclp->z_acl_bytes, in zfs_aclset_common()
1292 aoid, aclp->z_acl_bytes, 0, tx); in zfs_aclset_common()
1295 for (aclnode = list_head(&aclp->z_acl); aclnode; in zfs_aclset_common()
1296 aclnode = list_next(&aclp->z_acl, aclnode)) { in zfs_aclset_common()
1316 for (aclnode = list_head(&aclp->z_acl); aclnode; in zfs_aclset_common()
1317 aclnode = list_next(&aclp->z_acl, aclnode)) { in zfs_aclset_common()
1329 if (aclp->z_version == ZFS_ACL_VERSION_INITIAL) { in zfs_aclset_common()
1330 acl_phys.z_acl_size = aclp->z_acl_count; in zfs_aclset_common()
1331 acl_phys.z_acl_count = aclp->z_acl_bytes; in zfs_aclset_common()
1333 acl_phys.z_acl_size = aclp->z_acl_bytes; in zfs_aclset_common()
1334 acl_phys.z_acl_count = aclp->z_acl_count; in zfs_aclset_common()
1336 acl_phys.z_acl_version = aclp->z_version; in zfs_aclset_common()
1347 zp->z_pflags |= aclp->z_hints; in zfs_aclset_common()
1349 zai.zai_aclp = aclp; in zfs_aclset_common()
1359 zfs_acl_t *aclp) in zfs_acl_chmod() argument
1369 size_t abstract_size = aclp->z_ops.ace_abstract_size(); in zfs_acl_chmod()
1381 newnode = zfs_acl_node_alloc((abstract_size * 6) + aclp->z_acl_bytes); in zfs_acl_chmod()
1385 zfs_set_ace(aclp, zacep, masks.allow0, ALLOW, -1, ACE_OWNER); in zfs_acl_chmod()
1391 zfs_set_ace(aclp, zacep, masks.deny1, DENY, -1, ACE_OWNER); in zfs_acl_chmod()
1397 zfs_set_ace(aclp, zacep, masks.deny2, DENY, -1, OWNING_GROUP); in zfs_acl_chmod()
1403 zai.zai_aclp = aclp; in zfs_acl_chmod()
1436 aclp->z_hints |= ZFS_INHERIT_ACE; in zfs_acl_chmod()
1445 aclp->z_hints |= ZFS_ACL_OBJ_ACE; in zfs_acl_chmod()
1458 zfs_set_ace(aclp, zacep, access_mask, type, who, iflags); in zfs_acl_chmod()
1459 ace_size = aclp->z_ops.ace_size(acep); in zfs_acl_chmod()
1464 zfs_set_ace(aclp, zacep, masks.owner, ALLOW, -1, ACE_OWNER); in zfs_acl_chmod()
1466 zfs_set_ace(aclp, zacep, masks.group, ALLOW, -1, OWNING_GROUP); in zfs_acl_chmod()
1468 zfs_set_ace(aclp, zacep, masks.everyone, ALLOW, -1, ACE_EVERYONE); in zfs_acl_chmod()
1472 zfs_acl_release_nodes(aclp); in zfs_acl_chmod()
1473 aclp->z_acl_count = new_count; in zfs_acl_chmod()
1474 aclp->z_acl_bytes = new_bytes; in zfs_acl_chmod()
1477 list_insert_tail(&aclp->z_acl, newnode); in zfs_acl_chmod()
1481 zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode) in zfs_acl_chmod_setattr() argument
1488 *aclp = zfs_acl_alloc(zfs_acl_version_zp(zp)); in zfs_acl_chmod_setattr()
1490 error = zfs_acl_node_read(zp, B_TRUE, aclp, B_TRUE); in zfs_acl_chmod_setattr()
1493 (*aclp)->z_hints = zp->z_pflags & V4_ACL_WIDE_FLAGS; in zfs_acl_chmod_setattr()
1495 (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_GROUPMASK), *aclp); in zfs_acl_chmod_setattr()
1529 zfs_acl_t *aclp = NULL; in zfs_acl_inherit() local
1543 aclp = zfs_acl_alloc(paclp->z_version); in zfs_acl_inherit()
1546 return (aclp); in zfs_acl_inherit()
1593 ace_size = aclp->z_ops.ace_size(pacep); in zfs_acl_inherit()
1595 list_insert_tail(&aclp->z_acl, aclnode); in zfs_acl_inherit()
1598 zfs_set_ace(aclp, acep, access_mask, type, in zfs_acl_inherit()
1605 VERIFY((data2sz = aclp->z_ops.ace_data(acep, in zfs_acl_inherit()
1610 aclp->z_acl_count++; in zfs_acl_inherit()
1612 aclp->z_acl_bytes += aclnode->z_size; in zfs_acl_inherit()
1613 newflags = aclp->z_ops.ace_flags_get(acep); in zfs_acl_inherit()
1621 aclp->z_ops.ace_flags_set(acep, in zfs_acl_inherit()
1629 aclp->z_hints |= ZFS_INHERIT_ACE; in zfs_acl_inherit()
1638 aclp->z_ops.ace_flags_set(acep, in zfs_acl_inherit()
1642 aclp->z_ops.ace_flags_set(acep, in zfs_acl_inherit()
1647 return (aclp); in zfs_acl_inherit()
1821 zfs_acl_t *aclp; in zfs_getacl() local
1841 aclp = zp->z_acl_cached; in zfs_getacl()
1842 if (aclp == NULL) { in zfs_getacl()
1851 error = zfs_acl_node_read(zp, B_FALSE, &aclp, B_FALSE); in zfs_getacl()
1870 zai.zai_aclp = aclp; in zfs_getacl()
1886 count = (int)aclp->z_acl_count; in zfs_getacl()
1901 if (aclp->z_version == ZFS_ACL_VERSION_FUID) in zfs_getacl()
1902 zfs_copy_fuid_2_ace(zp->z_zfsvfs, aclp, cr, in zfs_getacl()
1908 for (aclnode = list_head(&aclp->z_acl); aclnode; in zfs_getacl()
1909 aclnode = list_next(&aclp->z_acl, aclnode)) { in zfs_getacl()
1915 aclp->z_acl_bytes); in zfs_getacl()
1937 zfs_acl_t *aclp; in zfs_vsec_2_aclp() local
1945 aclp = zfs_acl_alloc(zfs_acl_version(zfsvfs->z_version)); in zfs_vsec_2_aclp()
1947 aclp->z_hints = 0; in zfs_vsec_2_aclp()
1949 if (aclp->z_version == ZFS_ACL_VERSION_INITIAL) { in zfs_vsec_2_aclp()
1950 if ((error = zfs_copy_ace_2_oldace(obj_type, aclp, in zfs_vsec_2_aclp()
1953 zfs_acl_free(aclp); in zfs_vsec_2_aclp()
1958 if ((error = zfs_copy_ace_2_fuid(zfsvfs, obj_type, aclp, in zfs_vsec_2_aclp()
1961 zfs_acl_free(aclp); in zfs_vsec_2_aclp()
1966 aclp->z_acl_bytes = aclnode->z_size; in zfs_vsec_2_aclp()
1968 aclp->z_acl_count = aclcnt; in zfs_vsec_2_aclp()
1969 list_insert_head(&aclp->z_acl, aclnode); in zfs_vsec_2_aclp()
1976 aclp->z_hints |= ZFS_ACL_PROTECTED; in zfs_vsec_2_aclp()
1978 aclp->z_hints |= ZFS_ACL_DEFAULTED; in zfs_vsec_2_aclp()
1980 aclp->z_hints |= ZFS_ACL_AUTO_INHERIT; in zfs_vsec_2_aclp()
1983 *zaclp = aclp; in zfs_vsec_2_aclp()
1999 zfs_acl_t *aclp; in zfs_setacl() local
2014 &aclp); in zfs_setacl()
2023 aclp->z_hints |= in zfs_setacl()
2049 aclp->z_acl_bytes); in zfs_setacl()
2051 dmu_tx_hold_write(tx, acl_obj, 0, aclp->z_acl_bytes); in zfs_setacl()
2053 } else if (!zp->z_is_sa && aclp->z_acl_bytes > ZFS_ACE_SPACE) { in zfs_setacl()
2054 dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, aclp->z_acl_bytes); in zfs_setacl()
2069 zfs_acl_free(aclp); in zfs_setacl()
2073 error = zfs_aclset_common(zp, aclp, cr, tx); in zfs_setacl()
2076 zp->z_acl_cached = aclp; in zfs_setacl()
2160 zfs_acl_t *aclp; in zfs_zaccess_aces_check() local
2176 aclp = zp->z_acl_cached; in zfs_zaccess_aces_check()
2177 if (aclp == NULL) { in zfs_zaccess_aces_check()
2186 error = zfs_acl_node_read(zp, B_FALSE, &aclp, B_FALSE); in zfs_zaccess_aces_check()
2195 zai.zai_aclp = aclp; in zfs_zaccess_aces_check()