Lines Matching defs: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);
370 zfs_acl_znode_info(znode_t *zp, int *aclsize, int *aclcount,
373 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
378 ASSERT(MUTEX_HELD(&zp->z_acl_lock));
379 if (zp->z_is_sa) {
380 if ((error = sa_size(zp->z_sa_hdl, SA_ZPL_DACL_ACES(zfsvfs),
384 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_DACL_COUNT(zfsvfs),
389 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_ZNODE_ACL(zfsvfs),
405 zfs_znode_acl_version(znode_t *zp)
409 if (zp->z_is_sa)
422 if ((error = sa_lookup(zp->z_sa_hdl,
423 SA_ZPL_ZNODE_ACL(zp->z_zfsvfs),
431 VERIFY(zp->z_is_sa);
448 zfs_acl_version_zp(znode_t *zp)
450 return (zfs_acl_version(zp->z_zfsvfs->z_version));
797 zfs_acl_xform(znode_t *zp, zfs_acl_t *aclp, cred_t *cr)
829 VERIFY0(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;
1140 zfs_acl_chown_setattr(znode_t *zp)
1145 if (zp->z_zfsvfs->z_replay == B_FALSE) {
1146 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
1147 ASSERT_VOP_IN_SEQC(ZTOV(zp));
1149 ASSERT(MUTEX_HELD(&zp->z_acl_lock));
1151 if ((error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE)) == 0)
1152 zp->z_mode = zfs_mode_compute(zp->z_mode, aclp,
1153 &zp->z_pflags, zp->z_uid, zp->z_gid);
1165 zfs_aclset_common(znode_t *zp, zfs_acl_t *aclp, cred_t *cr, dmu_tx_t *tx)
1168 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1177 if (zp->z_zfsvfs->z_replay == B_FALSE) {
1178 ASSERT_VOP_IN_SEQC(ZTOV(zp));
1181 mode = zp->z_mode;
1183 mode = zfs_mode_compute(mode, aclp, &zp->z_pflags,
1184 zp->z_uid, zp->z_gid);
1186 zp->z_mode = mode;
1190 &zp->z_pflags, sizeof (zp->z_pflags));
1194 if (zp->z_acl_cached) {
1195 zfs_acl_free(zp->z_acl_cached);
1196 zp->z_acl_cached = NULL;
1207 zfs_acl_xform(zp, aclp, cr);
1217 if (zp->z_is_sa) { /* the easy case, just update the ACL attribute */
1228 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_ZNODE_ACL(zfsvfs),
1309 zp->z_pflags &= ~ZFS_ACL_WIDE_FLAGS;
1311 zp->z_pflags |= aclp->z_hints;
1314 zp->z_pflags |= ZFS_ACL_TRIVIAL;
1316 zfs_tstamp_update_setup(zp, STATE_CHANGED, NULL, ctime);
1317 return (sa_bulk_update(zp->z_sa_hdl, bulk, count, tx));
1442 zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode)
1446 mutex_enter(&zp->z_acl_lock);
1447 if (zp->z_zfsvfs->z_replay == B_FALSE)
1448 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
1449 if (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_DISCARD)
1450 *aclp = zfs_acl_alloc(zfs_acl_version_zp(zp));
1452 error = zfs_acl_node_read(zp, B_TRUE, aclp, B_TRUE);
1455 (*aclp)->z_hints = zp->z_pflags & V4_ACL_WIDE_FLAGS;
1456 zfs_acl_chmod(ZTOV(zp)->v_type, mode, B_TRUE,
1457 (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_GROUPMASK), *aclp);
1459 mutex_exit(&zp->z_acl_lock);
1776 zfs_getacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr)
1790 if ((error = zfs_zaccess(zp, ACE_READ_ACL, 0, skipaclchk, cr, NULL)))
1793 mutex_enter(&zp->z_acl_lock);
1795 if (zp->z_zfsvfs->z_replay == B_FALSE)
1796 ASSERT_VOP_LOCKED(ZTOV(zp), __func__);
1797 error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE);
1799 mutex_exit(&zp->z_acl_lock);
1806 if ((zp->z_pflags & ZFS_ACL_OBJ_ACE) && !(mask & VSA_ACE_ALLTYPES)) {
1843 zfs_copy_fuid_2_ace(zp->z_zfsvfs, aclp, cr,
1861 if (zp->z_pflags & ZFS_ACL_DEFAULTED)
1863 if (zp->z_pflags & ZFS_ACL_PROTECTED)
1865 if (zp->z_pflags & ZFS_ACL_AUTO_INHERIT)
1869 mutex_exit(&zp->z_acl_lock);
1933 zfs_setacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr)
1935 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1945 if (zp->z_zfsvfs->z_replay == B_FALSE)
1946 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
1950 if (zp->z_pflags & ZFS_IMMUTABLE)
1953 if ((error = zfs_zaccess(zp, ACE_WRITE_ACL, 0, skipaclchk, cr, NULL)))
1956 error = zfs_vsec_2_aclp(zfsvfs, ZTOV(zp)->v_type, vsecp, cr, &fuidp,
1967 (zp->z_pflags & V4_ACL_WIDE_FLAGS);
1970 mutex_enter(&zp->z_acl_lock);
1974 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE);
1985 if ((acl_obj = zfs_external_acl(zp)) != 0) {
1987 zfs_znode_acl_version(zp) <= ZFS_ACL_VERSION_INITIAL) {
1995 } else if (!zp->z_is_sa && aclp->z_acl_bytes > ZFS_ACE_SPACE) {
1999 zfs_sa_upgrade_txholds(tx, zp);
2002 mutex_exit(&zp->z_acl_lock);
2014 error = zfs_aclset_common(zp, aclp, cr, tx);
2016 ASSERT3P(zp->z_acl_cached, ==, NULL);
2017 zp->z_acl_cached = aclp;
2022 zfs_log_acl(zilog, tx, zp, vsecp, fuidp);
2027 mutex_exit(&zp->z_acl_lock);
2038 zfs_zaccess_dataset_check(znode_t *zp, uint32_t v4_mode)
2041 (zp->z_zfsvfs->z_vfs->vfs_flag & VFS_RDONLY) &&
2042 (!IS_DEVVP(ZTOV(zp)) || (v4_mode & WRITE_MASK_ATTRS))) {
2051 (zp->z_pflags & ZFS_IMMUTABLE)) {
2061 (zp->z_pflags & ZFS_NOUNLINK)) {
2066 (zp->z_pflags & ZFS_AV_QUARANTINED))) {
2099 zfs_zaccess_aces_check(znode_t *zp, uint32_t *working_mode,
2102 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
2116 zfs_fuid_map_ids(zp, cr, &fowner, &gowner);
2118 mutex_enter(&zp->z_acl_lock);
2120 if (zp->z_zfsvfs->z_replay == B_FALSE)
2121 ASSERT_VOP_LOCKED(ZTOV(zp), __func__);
2122 error = zfs_acl_node_read(zp, B_TRUE, &aclp, B_FALSE);
2124 mutex_exit(&zp->z_acl_lock);
2128 ASSERT3P(zp->z_acl_cached, !=, NULL);
2137 if (ZTOV(zp)->v_type == VDIR && (iflags & ACE_INHERIT_ONLY_ACE))
2176 mutex_exit(&zp->z_acl_lock);
2184 znode_t *, zp,
2190 znode_t *, zp,
2194 mutex_exit(&zp->z_acl_lock);
2206 mutex_exit(&zp->z_acl_lock);
2224 zfs_has_access(znode_t *zp, cred_t *cr)
2228 if (zfs_zaccess_aces_check(zp, &have, B_TRUE, cr) != 0) {
2231 owner = zfs_fuid_map_id(zp->z_zfsvfs, zp->z_uid, cr, ZFS_OWNER);
2232 return (secpolicy_vnode_any_access(cr, ZTOV(zp), owner) == 0);
2238 zfs_zaccess_common(znode_t *zp, uint32_t v4_mode, uint32_t *working_mode,
2241 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
2255 if ((err = zfs_zaccess_dataset_check(zp, v4_mode)) != 0) {
2283 (ZTOV(zp)->v_type != VDIR) &&
2284 (zp->z_pflags & ZFS_READONLY)) {
2288 return (zfs_zaccess_aces_check(zp, working_mode, B_FALSE, cr));
2292 zfs_zaccess_append(znode_t *zp, uint32_t *working_mode, boolean_t *check_privs,
2298 return (zfs_zaccess_common(zp, ACE_APPEND_DATA, working_mode,
2341 zfs_zaccess(znode_t *zp, int mode, int flags, boolean_t skipaclchk, cred_t *cr,
2349 znode_t *check_zp = zp;
2353 is_attr = ((zp->z_pflags & ZFS_XATTR) && (ZTOV(zp)->v_type == VDIR));
2360 if (zp->z_pflags & ZFS_XATTR)
2363 owner = zfs_fuid_map_id(zp->z_zfsvfs, zp->z_uid, cr, ZFS_OWNER);
2392 return (secpolicy_vnode_access2(cr, ZTOV(zp), owner,
2403 error = zfs_zaccess_append(zp, &working_mode, &check_privs, cr);
2455 error = secpolicy_vnode_access2(cr, ZTOV(zp), owner,
2471 zfs_zaccess_rwx(znode_t *zp, mode_t mode, int flags, cred_t *cr,
2474 return (zfs_zaccess(zp, zfs_unix_to_v4(mode >> 6), flags, B_FALSE, cr,
2482 zfs_zaccess_unix(void *zp, int mode, cred_t *cr)
2486 return (zfs_zaccess(zp, v4_mode, 0, B_FALSE, cr, NULL));
2490 zfs_delete_final_check(znode_t *zp, znode_t *dzp,
2502 error = zfs_sticky_remove_access(dzp, zp, cr);
2542 zfs_zaccess_delete(znode_t *dzp, znode_t *zp, cred_t *cr, zidmap_t *mnt_ns)
2565 if (zp->z_pflags & (ZFS_IMMUTABLE | ZFS_NOUNLINK))
2579 if ((zp_error = zfs_zaccess_common(zp, ACE_DELETE, &zp_working_mode,
2602 /* XXXPJD: s/dzp/zp/ ? */
2623 return (zfs_delete_final_check(zp, dzp, available_perms, cr));