Lines Matching defs:aclp
454 zfs_acl_t *aclp;
456 aclp = kmem_zalloc(sizeof (zfs_acl_t), KM_SLEEP);
457 list_create(&aclp->z_acl, sizeof (zfs_acl_node_t),
459 aclp->z_version = vers;
461 aclp->z_ops = &zfs_acl_fuid_ops;
463 aclp->z_ops = &zfs_acl_v0_ops;
464 return (aclp);
492 zfs_acl_release_nodes(zfs_acl_t *aclp)
496 while ((aclnode = list_remove_head(&aclp->z_acl)))
498 aclp->z_acl_count = 0;
499 aclp->z_acl_bytes = 0;
503 zfs_acl_free(zfs_acl_t *aclp)
505 zfs_acl_release_nodes(aclp);
506 list_destroy(&aclp->z_acl);
507 kmem_free(aclp, sizeof (zfs_acl_t));
533 zfs_ace_valid(umode_t obj_mode, zfs_acl_t *aclp, uint16_t type, uint16_t iflags)
547 if (aclp->z_version < ZFS_ACL_VERSION_FUID)
549 aclp->z_hints |= ZFS_ACL_OBJ_ACE;
558 aclp->z_hints |= ZFS_INHERIT_ACE;
571 zfs_acl_next_ace(zfs_acl_t *aclp, void *start, uint64_t *who,
576 ASSERT(aclp);
579 aclnode = list_head(&aclp->z_acl);
583 aclp->z_next_ace = aclnode->z_acldata;
584 aclp->z_curr_node = aclnode;
588 aclnode = aclp->z_curr_node;
594 aclnode = list_next(&aclp->z_acl, aclnode);
598 aclp->z_curr_node = aclnode;
600 aclp->z_next_ace = aclnode->z_acldata;
605 void *acep = aclp->z_next_ace;
611 ace_size = aclp->z_ops->ace_size(acep);
618 *iflags = aclp->z_ops->ace_flags_get(acep);
619 *type = aclp->z_ops->ace_type_get(acep);
620 *access_mask = aclp->z_ops->ace_mask_get(acep);
621 *who = aclp->z_ops->ace_who_get(acep);
622 aclp->z_next_ace = (caddr_t)aclp->z_next_ace + ace_size;
635 zfs_acl_t *aclp = datap;
639 acep = zfs_acl_next_ace(aclp, acep, &who, mask,
650 zfs_copy_ace_2_fuid(zfsvfs_t *zfsvfs, umode_t obj_mode, zfs_acl_t *aclp,
676 if (zfs_ace_valid(obj_mode, aclp, aceptr->z_hdr.z_type,
700 aclp->z_ops->ace_size(aceptr));
712 zfs_copy_fuid_2_ace(zfsvfs_t *zfsvfs, zfs_acl_t *aclp, cred_t *cr,
725 while ((zacep = zfs_acl_next_ace(aclp, zacep,
769 zfs_copy_ace_2_oldace(umode_t obj_mode, zfs_acl_t *aclp, ace_t *acep,
783 if (zfs_ace_valid(obj_mode, aclp, aceptr->z_type,
795 zfs_acl_xform(znode_t *zp, zfs_acl_t *aclp, cred_t *cr)
805 ASSERT(aclp->z_version == ZFS_ACL_VERSION_INITIAL);
813 oldaclp = kmem_alloc(sizeof (zfs_oldace_t) * aclp->z_acl_count,
816 while ((cookie = zfs_acl_next_ace(aclp, cookie, &who,
824 newaclnode = zfs_acl_node_alloc(aclp->z_acl_count *
826 aclp->z_ops = &zfs_acl_fuid_ops;
828 aclp, oldaclp, newaclnode->z_acldata, aclp->z_acl_count,
830 newaclnode->z_ace_count = aclp->z_acl_count;
831 aclp->z_version = ZFS_ACL_VERSION;
832 kmem_free(oldaclp, aclp->z_acl_count * sizeof (zfs_oldace_t));
838 zfs_acl_release_nodes(aclp);
840 list_insert_head(&aclp->z_acl, newaclnode);
842 aclp->z_acl_bytes = newaclnode->z_size;
843 aclp->z_acl_count = newaclnode->z_ace_count;
885 zfs_set_ace(zfs_acl_t *aclp, void *acep, uint32_t access_mask,
890 aclp->z_ops->ace_mask_set(acep, access_mask);
891 aclp->z_ops->ace_type_set(acep, access_type);
892 aclp->z_ops->ace_flags_set(acep, entry_type);
895 aclp->z_ops->ace_who_set(acep, fuid);
902 zfs_mode_compute(uint64_t fmode, zfs_acl_t *aclp,
916 while ((acep = zfs_acl_next_ace(aclp, acep, &who,
1074 zfs_acl_t *aclp;
1108 aclp = zfs_acl_alloc(version);
1110 aclp->z_acl_count = acl_count;
1111 aclp->z_acl_bytes = aclsize;
1114 aclnode->z_ace_count = aclp->z_acl_count;
1132 zfs_acl_free(aclp);
1140 list_insert_head(&aclp->z_acl, aclnode);
1142 *aclpp = aclp;
1144 zp->z_acl_cached = aclp;
1173 zfs_acl_t *aclp;
1181 error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE);
1182 if (error == 0 && aclp->z_acl_count > 0)
1184 zfs_mode_compute(zp->z_mode, aclp,
1354 zfs_aclset_common(znode_t *zp, zfs_acl_t *aclp, cred_t *cr, dmu_tx_t *tx)
1368 mode = zfs_mode_compute(mode, aclp, &zp->z_pflags,
1390 if ((aclp->z_version == ZFS_ACL_VERSION_INITIAL) &&
1392 zfs_acl_xform(zp, aclp, cr);
1393 ASSERT(aclp->z_version >= ZFS_ACL_VERSION_FUID);
1403 locate.cb_aclp = aclp;
1405 zfs_acl_data_locator, &locate, aclp->z_acl_bytes);
1407 NULL, &aclp->z_acl_count, sizeof (uint64_t));
1419 if (aclp->z_acl_bytes > ZFS_ACE_SPACE) {
1426 aclp->z_version != acl_phys.z_acl_version) {
1434 otype, aclp->z_acl_bytes,
1441 aoid, aclp->z_acl_bytes, 0, tx);
1444 for (aclnode = list_head(&aclp->z_acl); aclnode;
1445 aclnode = list_next(&aclp->z_acl, aclnode)) {
1465 for (aclnode = list_head(&aclp->z_acl); aclnode;
1466 aclnode = list_next(&aclp->z_acl, aclnode)) {
1478 if (aclp->z_version == ZFS_ACL_VERSION_INITIAL) {
1479 acl_phys.z_acl_size = aclp->z_acl_count;
1480 acl_phys.z_acl_count = aclp->z_acl_bytes;
1482 acl_phys.z_acl_size = aclp->z_acl_bytes;
1483 acl_phys.z_acl_count = aclp->z_acl_count;
1485 acl_phys.z_acl_version = aclp->z_version;
1496 zp->z_pflags |= aclp->z_hints;
1498 if (ace_trivial_common(aclp, 0, zfs_ace_walk) == 0)
1507 zfs_acl_t *aclp)
1517 size_t abstract_size = aclp->z_ops->ace_abstract_size();
1525 newnode = zfs_acl_node_alloc((abstract_size * 6) + aclp->z_acl_bytes);
1529 zfs_set_ace(aclp, zacep, masks.allow0, ALLOW, -1, ACE_OWNER);
1535 zfs_set_ace(aclp, zacep, masks.deny1, DENY, -1, ACE_OWNER);
1541 zfs_set_ace(aclp, zacep, masks.deny2, DENY, -1, OWNING_GROUP);
1547 while ((acep = zfs_acl_next_ace(aclp, acep, &who, &access_mask,
1579 aclp->z_hints |= ZFS_INHERIT_ACE;
1588 aclp->z_hints |= ZFS_ACL_OBJ_ACE;
1602 zfs_set_ace(aclp, zacep, access_mask, type, who, iflags);
1603 ace_size = aclp->z_ops->ace_size(acep);
1608 zfs_set_ace(aclp, zacep, masks.owner, ALLOW, -1, ACE_OWNER);
1610 zfs_set_ace(aclp, zacep, masks.group, ALLOW, -1, OWNING_GROUP);
1612 zfs_set_ace(aclp, zacep, masks.everyone, ALLOW, -1, ACE_EVERYONE);
1616 zfs_acl_release_nodes(aclp);
1617 aclp->z_acl_count = new_count;
1618 aclp->z_acl_bytes = new_bytes;
1621 list_insert_tail(&aclp->z_acl, newnode);
1625 zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode)
1632 *aclp = zfs_acl_alloc(zfs_acl_version_zp(zp));
1634 error = zfs_acl_node_read(zp, B_TRUE, aclp, B_TRUE);
1637 (*aclp)->z_hints = zp->z_pflags & V4_ACL_WIDE_FLAGS;
1639 (ZTOZSB(zp)->z_acl_mode == ZFS_ACL_GROUPMASK), *aclp);
1673 zfs_acl_t *aclp = NULL;
1686 aclp = zfs_acl_alloc(paclp->z_version);
1689 return (aclp);
1735 ace_size = aclp->z_ops->ace_size(pacep);
1737 list_insert_tail(&aclp->z_acl, aclnode);
1740 zfs_set_ace(aclp, acep, access_mask, type,
1747 VERIFY((data2sz = aclp->z_ops->ace_data(acep,
1752 aclp->z_acl_count++;
1754 aclp->z_acl_bytes += aclnode->z_size;
1755 newflags = aclp->z_ops->ace_flags_get(acep);
1763 aclp->z_ops->ace_flags_set(acep,
1771 aclp->z_hints |= ZFS_INHERIT_ACE;
1780 aclp->z_ops->ace_flags_set(acep,
1784 aclp->z_ops->ace_flags_set(acep,
1789 aclp->z_acl_count != 0) {
1793 return (aclp);
1969 zfs_acl_t *aclp;
1987 error = zfs_acl_node_read(zp, B_FALSE, &aclp, B_FALSE);
2002 while ((zacep = zfs_acl_next_ace(aclp, zacep,
2017 count = (int)aclp->z_acl_count;
2032 if (aclp->z_version == ZFS_ACL_VERSION_FUID)
2033 zfs_copy_fuid_2_ace(ZTOZSB(zp), aclp, cr,
2039 for (aclnode = list_head(&aclp->z_acl); aclnode;
2040 aclnode = list_next(&aclp->z_acl, aclnode)) {
2046 aclp->z_acl_bytes);
2068 zfs_acl_t *aclp;
2076 aclp = zfs_acl_alloc(zfs_acl_version(zfsvfs->z_version));
2078 aclp->z_hints = 0;
2080 if (aclp->z_version == ZFS_ACL_VERSION_INITIAL) {
2081 if ((error = zfs_copy_ace_2_oldace(obj_mode, aclp,
2084 zfs_acl_free(aclp);
2089 if ((error = zfs_copy_ace_2_fuid(zfsvfs, obj_mode, aclp,
2092 zfs_acl_free(aclp);
2097 aclp->z_acl_bytes = aclnode->z_size;
2099 aclp->z_acl_count = aclcnt;
2100 list_insert_head(&aclp->z_acl, aclnode);
2107 aclp->z_hints |= ZFS_ACL_PROTECTED;
2109 aclp->z_hints |= ZFS_ACL_DEFAULTED;
2111 aclp->z_hints |= ZFS_ACL_AUTO_INHERIT;
2114 *zaclp = aclp;
2130 zfs_acl_t *aclp;
2146 &aclp);
2155 aclp->z_hints |=
2181 aclp->z_acl_bytes);
2183 dmu_tx_hold_write(tx, acl_obj, 0, aclp->z_acl_bytes);
2185 } else if (!zp->z_is_sa && aclp->z_acl_bytes > ZFS_ACE_SPACE) {
2186 dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, aclp->z_acl_bytes);
2201 zfs_acl_free(aclp);
2205 error = zfs_aclset_common(zp, aclp, cr, tx);
2208 zp->z_acl_cached = aclp;
2290 zfs_acl_t *aclp;
2313 error = zfs_acl_node_read(zp, B_FALSE, &aclp, B_FALSE);
2321 while ((acep = zfs_acl_next_ace(aclp, acep, &who, &access_mask,