diff options
author | mm <mm@FreeBSD.org> | 2012-11-22 06:45:28 +0000 |
---|---|---|
committer | mm <mm@FreeBSD.org> | 2012-11-22 06:45:28 +0000 |
commit | 9fbb4e52417d3a6753dcd43c138cab41287b8bf4 (patch) | |
tree | 7d79fad6b90fce12b1832177bb7fd0365b3b13e3 | |
parent | 08e2fe94c1fd972f615f3f2005adbd00bb9dd5c3 (diff) | |
download | FreeBSD-src-9fbb4e52417d3a6753dcd43c138cab41287b8bf4.zip FreeBSD-src-9fbb4e52417d3a6753dcd43c138cab41287b8bf4.tar.gz |
Update vendor/illumos/dist and vendor-sys/illumos/dist
to illumos-gate 13889:a67716f16746
(illumos zfs issue #3254)
-rw-r--r-- | common/zfs/zfs_prop.c | 4 | ||||
-rw-r--r-- | uts/common/fs/zfs/zfs_vnops.c | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/common/zfs/zfs_prop.c b/common/zfs/zfs_prop.c index 5d45361..4f79836 100644 --- a/common/zfs/zfs_prop.c +++ b/common/zfs/zfs_prop.c @@ -109,6 +109,7 @@ zfs_prop_init(void) { "discard", ZFS_ACL_DISCARD }, { "groupmask", ZFS_ACL_GROUPMASK }, { "passthrough", ZFS_ACL_PASSTHROUGH }, + { "restricted", ZFS_ACL_RESTRICTED }, { NULL } }; @@ -217,7 +218,8 @@ zfs_prop_init(void) "hidden | visible", "SNAPDIR", snapdir_table); zprop_register_index(ZFS_PROP_ACLMODE, "aclmode", ZFS_ACL_DISCARD, PROP_INHERIT, ZFS_TYPE_FILESYSTEM, - "discard | groupmask | passthrough", "ACLMODE", acl_mode_table); + "discard | groupmask | passthrough | restricted", "ACLMODE", + acl_mode_table); zprop_register_index(ZFS_PROP_ACLINHERIT, "aclinherit", ZFS_ACL_RESTRICTED, PROP_INHERIT, ZFS_TYPE_FILESYSTEM, "discard | noallow | restricted | passthrough | passthrough-x", diff --git a/uts/common/fs/zfs/zfs_vnops.c b/uts/common/fs/zfs/zfs_vnops.c index 21350a1..de7812f 100644 --- a/uts/common/fs/zfs/zfs_vnops.c +++ b/uts/common/fs/zfs/zfs_vnops.c @@ -2982,6 +2982,12 @@ top: uint64_t acl_obj; new_mode = (pmode & S_IFMT) | (vap->va_mode & ~S_IFMT); + if (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_RESTRICTED && + !(zp->z_pflags & ZFS_ACL_TRIVIAL)) { + err = EPERM; + goto out; + } + if (err = zfs_acl_chmod_setattr(zp, &aclp, new_mode)) goto out; |