• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/contrib/openzfs/module/os/freebsd/zfs/

Lines Matching refs:zp

332 zfs_external_acl(znode_t *zp)
337 if (zp->z_is_sa)
349 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_ZNODE_ACL(zp->z_zfsvfs),
357 VERIFY(zp->z_is_sa && error == ENOENT);
369 zfs_acl_znode_info(znode_t *zp, int *aclsize, int *aclcount,
372 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
377 ASSERT(MUTEX_HELD(&zp->z_acl_lock));
378 if (zp->z_is_sa) {
379 if ((error = sa_size(zp->z_sa_hdl, SA_ZPL_DACL_ACES(zfsvfs),
383 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_DACL_COUNT(zfsvfs),
388 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_ZNODE_ACL(zfsvfs),
404 zfs_znode_acl_version(znode_t *zp)
408 if (zp->z_is_sa)
421 if ((error = sa_lookup(zp->z_sa_hdl,
422 SA_ZPL_ZNODE_ACL(zp->z_zfsvfs),
430 VERIFY(zp->z_is_sa && error == ENOENT);
446 zfs_acl_version_zp(znode_t *zp)
448 return (zfs_acl_version(zp->z_zfsvfs->z_version));
797 zfs_acl_xform(znode_t *zp, zfs_acl_t *aclp, cred_t *cr)
829 VERIFY(zfs_copy_ace_2_fuid(zp->z_zfsvfs, ZTOV(zp)->v_type, aclp,
1053 zfs_acl_node_read(znode_t *zp, boolean_t have_lock, zfs_acl_t **aclpp,
1064 ASSERT(MUTEX_HELD(&zp->z_acl_lock));
1065 if (zp->z_zfsvfs->z_replay == B_FALSE)
1066 ASSERT_VOP_LOCKED(ZTOV(zp), __func__);
1068 if (zp->z_acl_cached && !will_modify) {
1069 *aclpp = zp->z_acl_cached;
1073 version = zfs_znode_acl_version(zp);
1075 if ((error = zfs_acl_znode_info(zp, &aclsize,
1089 if (!zp->z_is_sa) {
1091 error = dmu_read(zp->z_zfsvfs->z_os,
1099 error = sa_lookup(zp->z_sa_hdl, SA_ZPL_DACL_ACES(zp->z_zfsvfs),
1116 zp->z_acl_cached = aclp;
1139 zfs_acl_chown_setattr(znode_t *zp)
1144 if (zp->z_zfsvfs->z_replay == B_FALSE) {
1145 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
1146 ASSERT_VOP_IN_SEQC(ZTOV(zp));
1148 ASSERT(MUTEX_HELD(&zp->z_acl_lock));
1150 if ((error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE)) == 0)
1151 zp->z_mode = zfs_mode_compute(zp->z_mode, aclp,
1152 &zp->z_pflags, zp->z_uid, zp->z_gid);
1164 zfs_aclset_common(znode_t *zp, zfs_acl_t *aclp, cred_t *cr, dmu_tx_t *tx)
1167 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1176 if (zp->z_zfsvfs->z_replay == B_FALSE) {
1177 ASSERT_VOP_IN_SEQC(ZTOV(zp));
1180 mode = zp->z_mode;
1182 mode = zfs_mode_compute(mode, aclp, &zp->z_pflags,
1183 zp->z_uid, zp->z_gid);
1185 zp->z_mode = mode;
1189 &zp->z_pflags, sizeof (zp->z_pflags));
1193 if (zp->z_acl_cached) {
1194 zfs_acl_free(zp->z_acl_cached);
1195 zp->z_acl_cached = NULL;
1206 zfs_acl_xform(zp, aclp, cr);
1216 if (zp->z_is_sa) { /* the easy case, just update the ACL attribute */
1227 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_ZNODE_ACL(zfsvfs),
1308 zp->z_pflags &= ~ZFS_ACL_WIDE_FLAGS;
1310 zp->z_pflags |= aclp->z_hints;
1313 zp->z_pflags |= ZFS_ACL_TRIVIAL;
1315 zfs_tstamp_update_setup(zp, STATE_CHANGED, NULL, ctime);
1316 return (sa_bulk_update(zp->z_sa_hdl, bulk, count, tx));
1441 zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode)
1445 mutex_enter(&zp->z_acl_lock);
1446 if (zp->z_zfsvfs->z_replay == B_FALSE)
1447 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
1448 if (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_DISCARD)
1449 *aclp = zfs_acl_alloc(zfs_acl_version_zp(zp));
1451 error = zfs_acl_node_read(zp, B_TRUE, aclp, B_TRUE);
1454 (*aclp)->z_hints = zp->z_pflags & V4_ACL_WIDE_FLAGS;
1455 zfs_acl_chmod(ZTOV(zp)->v_type, mode, B_TRUE,
1456 (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_GROUPMASK), *aclp);
1458 mutex_exit(&zp->z_acl_lock);
1773 zfs_getacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr)
1787 if ((error = zfs_zaccess(zp, ACE_READ_ACL, 0, skipaclchk, cr)))
1790 mutex_enter(&zp->z_acl_lock);
1792 if (zp->z_zfsvfs->z_replay == B_FALSE)
1793 ASSERT_VOP_LOCKED(ZTOV(zp), __func__);
1794 error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE);
1796 mutex_exit(&zp->z_acl_lock);
1803 if ((zp->z_pflags & ZFS_ACL_OBJ_ACE) && !(mask & VSA_ACE_ALLTYPES)) {
1840 zfs_copy_fuid_2_ace(zp->z_zfsvfs, aclp, cr,
1858 if (zp->z_pflags & ZFS_ACL_DEFAULTED)
1860 if (zp->z_pflags & ZFS_ACL_PROTECTED)
1862 if (zp->z_pflags & ZFS_ACL_AUTO_INHERIT)
1866 mutex_exit(&zp->z_acl_lock);
1930 zfs_setacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr)
1932 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1942 if (zp->z_zfsvfs->z_replay == B_FALSE)
1943 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
1947 if (zp->z_pflags & ZFS_IMMUTABLE)
1950 if ((error = zfs_zaccess(zp, ACE_WRITE_ACL, 0, skipaclchk, cr)))
1953 error = zfs_vsec_2_aclp(zfsvfs, ZTOV(zp)->v_type, vsecp, cr, &fuidp,
1964 (zp->z_pflags & V4_ACL_WIDE_FLAGS);
1967 mutex_enter(&zp->z_acl_lock);
1971 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE);
1982 if ((acl_obj = zfs_external_acl(zp)) != 0) {
1984 zfs_znode_acl_version(zp) <= ZFS_ACL_VERSION_INITIAL) {
1992 } else if (!zp->z_is_sa && aclp->z_acl_bytes > ZFS_ACE_SPACE) {
1996 zfs_sa_upgrade_txholds(tx, zp);
1999 mutex_exit(&zp->z_acl_lock);
2011 error = zfs_aclset_common(zp, aclp, cr, tx);
2013 ASSERT(zp->z_acl_cached == NULL);
2014 zp->z_acl_cached = aclp;
2019 zfs_log_acl(zilog, tx, zp, vsecp, fuidp);
2024 mutex_exit(&zp->z_acl_lock);
2035 zfs_zaccess_dataset_check(znode_t *zp, uint32_t v4_mode)
2038 (zp->z_zfsvfs->z_vfs->vfs_flag & VFS_RDONLY) &&
2039 (!IS_DEVVP(ZTOV(zp)) ||
2040 (IS_DEVVP(ZTOV(zp)) && (v4_mode & WRITE_MASK_ATTRS)))) {
2049 (zp->z_pflags & ZFS_IMMUTABLE)) {
2059 (zp->z_pflags & ZFS_NOUNLINK)) {
2064 (zp->z_pflags & ZFS_AV_QUARANTINED))) {
2097 zfs_zaccess_aces_check(znode_t *zp, uint32_t *working_mode,
2100 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
2114 zfs_fuid_map_ids(zp, cr, &fowner, &gowner);
2116 mutex_enter(&zp->z_acl_lock);
2118 if (zp->z_zfsvfs->z_replay == B_FALSE)
2119 ASSERT_VOP_LOCKED(ZTOV(zp), __func__);
2120 error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE);
2122 mutex_exit(&zp->z_acl_lock);
2126 ASSERT(zp->z_acl_cached);
2135 if (ZTOV(zp)->v_type == VDIR && (iflags & ACE_INHERIT_ONLY_ACE))
2174 mutex_exit(&zp->z_acl_lock);
2182 znode_t *, zp,
2188 znode_t *, zp,
2192 mutex_exit(&zp->z_acl_lock);
2204 mutex_exit(&zp->z_acl_lock);
2222 zfs_has_access(znode_t *zp, cred_t *cr)
2226 if (zfs_zaccess_aces_check(zp, &have, B_TRUE, cr) != 0) {
2229 owner = zfs_fuid_map_id(zp->z_zfsvfs, zp->z_uid, cr, ZFS_OWNER);
2230 return (secpolicy_vnode_any_access(cr, ZTOV(zp), owner) == 0);
2236 zfs_zaccess_common(znode_t *zp, uint32_t v4_mode, uint32_t *working_mode,
2239 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
2253 if ((err = zfs_zaccess_dataset_check(zp, v4_mode)) != 0) {
2281 (ZTOV(zp)->v_type != VDIR) &&
2282 (zp->z_pflags & ZFS_READONLY)) {
2286 return (zfs_zaccess_aces_check(zp, working_mode, B_FALSE, cr));
2290 zfs_zaccess_append(znode_t *zp, uint32_t *working_mode, boolean_t *check_privs,
2296 return (zfs_zaccess_common(zp, ACE_APPEND_DATA, working_mode,
2339 zfs_zaccess(znode_t *zp, int mode, int flags, boolean_t skipaclchk, cred_t *cr)
2346 znode_t *check_zp = zp;
2350 is_attr = ((zp->z_pflags & ZFS_XATTR) && (ZTOV(zp)->v_type == VDIR));
2357 if (zp->z_pflags & ZFS_XATTR)
2360 owner = zfs_fuid_map_id(zp->z_zfsvfs, zp->z_uid, cr, ZFS_OWNER);
2389 return (secpolicy_vnode_access2(cr, ZTOV(zp), owner,
2400 error = zfs_zaccess_append(zp, &working_mode, &check_privs, cr);
2453 error = secpolicy_vnode_access2(cr, ZTOV(zp), owner,
2469 zfs_zaccess_rwx(znode_t *zp, mode_t mode, int flags, cred_t *cr)
2471 return (zfs_zaccess(zp, zfs_unix_to_v4(mode >> 6), flags, B_FALSE, cr));
2478 zfs_zaccess_unix(znode_t *zp, mode_t mode, cred_t *cr)
2482 return (zfs_zaccess(zp, v4_mode, 0, B_FALSE, cr));
2486 zfs_delete_final_check(znode_t *zp, znode_t *dzp,
2498 error = zfs_sticky_remove_access(dzp, zp, cr);
2538 zfs_zaccess_delete(znode_t *dzp, znode_t *zp, cred_t *cr)
2561 if (zp->z_pflags & (ZFS_IMMUTABLE | ZFS_NOUNLINK))
2575 if ((zp_error = zfs_zaccess_common(zp, ACE_DELETE, &zp_working_mode,
2597 /* XXXPJD: s/dzp/zp/ ? */
2618 return (zfs_delete_final_check(zp, dzp, available_perms, cr));