Page MenuHomeFreeBSD

D3540.id8432.diff
No OneTemporary

D3540.id8432.diff

Index: lib/libc/posix1e/acl_support_nfs4.c
===================================================================
--- lib/libc/posix1e/acl_support_nfs4.c
+++ lib/libc/posix1e/acl_support_nfs4.c
@@ -48,6 +48,7 @@
{ ACL_ENTRY_NO_PROPAGATE_INHERIT, "no_propagate", 'n'},
{ ACL_ENTRY_SUCCESSFUL_ACCESS, "successfull_access", 'S'},
{ ACL_ENTRY_FAILED_ACCESS, "failed_access", 'F'},
+ { ACL_ENTRY_INHERITED, "inherited", 'I' },
/*
* There is no ACE_IDENTIFIER_GROUP here - SunOS does not show it
* in the "flags" field. There is no ACE_OWNER, ACE_GROUP or
Index: sys/cddl/compat/opensolaris/kern/opensolaris_acl.c
===================================================================
--- sys/cddl/compat/opensolaris/kern/opensolaris_acl.c
+++ sys/cddl/compat/opensolaris/kern/opensolaris_acl.c
@@ -64,6 +64,8 @@
ACL_ENTRY_NO_PROPAGATE_INHERIT},
{ACE_INHERIT_ONLY_ACE,
ACL_ENTRY_INHERIT_ONLY},
+ {ACE_INHERITED_ACE,
+ ACL_ENTRY_INHERITED},
{ACE_SUCCESSFUL_ACCESS_ACE_FLAG,
ACL_ENTRY_SUCCESSFUL_ACCESS},
{ACE_FAILED_ACCESS_ACE_FLAG,
Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
===================================================================
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
@@ -1561,12 +1561,13 @@
}
aclnode = zfs_acl_node_alloc(ace_size);
- list_insert_tail(&aclp->z_acl, aclnode);
- acep = aclnode->z_acldata;
-
- zfs_set_ace(aclp, acep, access_mask, type,
- who, iflags|ACE_INHERITED_ACE);
-
+ list_insert_tail(&aclp->z_acl, aclnode);
+ acep = aclnode->z_acldata;
+
+ printf("%s(%d): here we are\n", __FUNCTION__, __LINE__);
+ zfs_set_ace(aclp, acep, access_mask, type,
+ who, iflags|ACE_INHERITED_ACE);
+
/*
* Copy special opaque data if any
*/
@@ -1583,12 +1584,14 @@
if (vdir)
aclp->z_hints |= ZFS_INHERIT_ACE;
-
- if ((iflags & ACE_NO_PROPAGATE_INHERIT_ACE) || !vdir) {
- newflags &= ~ALL_INHERIT;
- aclp->z_ops.ace_flags_set(acep,
- newflags|ACE_INHERITED_ACE);
- zfs_restricted_update(zfsvfs, aclp, acep);
+
+ if ((iflags & ACE_NO_PROPAGATE_INHERIT_ACE) || !vdir) {
+ newflags &= ~ALL_INHERIT;
+ printf("%s(%d): here we are\n", __FUNCTION__, __LINE__);
+
+ aclp->z_ops.ace_flags_set(acep,
+ newflags|ACE_INHERITED_ACE);
+ zfs_restricted_update(zfsvfs, aclp, acep);
continue;
}
@@ -1598,16 +1601,18 @@
* If only FILE_INHERIT is set then turn on
* inherit_only
*/
- if ((iflags & (ACE_FILE_INHERIT_ACE |
- ACE_DIRECTORY_INHERIT_ACE)) == ACE_FILE_INHERIT_ACE) {
- newflags |= ACE_INHERIT_ONLY_ACE;
- aclp->z_ops.ace_flags_set(acep,
- newflags|ACE_INHERITED_ACE);
- } else {
- newflags &= ~ACE_INHERIT_ONLY_ACE;
- aclp->z_ops.ace_flags_set(acep,
- newflags|ACE_INHERITED_ACE);
- }
+ if ((iflags & (ACE_FILE_INHERIT_ACE |
+ ACE_DIRECTORY_INHERIT_ACE)) == ACE_FILE_INHERIT_ACE) {
+ newflags |= ACE_INHERIT_ONLY_ACE;
+ printf("%s(%d): here we are\n", __FUNCTION__, __LINE__);
+ aclp->z_ops.ace_flags_set(acep,
+ newflags|ACE_INHERITED_ACE);
+ } else {
+ newflags &= ~ACE_INHERIT_ONLY_ACE;
+ printf("%s(%d): here we are\n", __FUNCTION__, __LINE__);
+ aclp->z_ops.ace_flags_set(acep,
+ newflags|ACE_INHERITED_ACE);
+ }
}
return (aclp);
}
Index: sys/cddl/contrib/opensolaris/uts/common/sys/acl.h
===================================================================
--- sys/cddl/contrib/opensolaris/uts/common/sys/acl.h
+++ sys/cddl/contrib/opensolaris/uts/common/sys/acl.h
@@ -189,11 +189,12 @@
ACE_DIRECTORY_INHERIT_ACE | \
ACE_NO_PROPAGATE_INHERIT_ACE | \
ACE_INHERIT_ONLY_ACE | \
+ ACE_INHERITED_ACE | \
ACE_IDENTIFIER_GROUP)
#define ACE_TYPE_FLAGS (ACE_OWNER|ACE_GROUP|ACE_EVERYONE| \
ACE_IDENTIFIER_GROUP)
-#define ACE_INHERIT_FLAGS (ACE_FILE_INHERIT_ACE| \
+#define ACE_INHERIT_FLAGS (ACE_FILE_INHERIT_ACE| ACL_INHERITED_ACE| \
ACE_DIRECTORY_INHERIT_ACE|ACE_NO_PROPAGATE_INHERIT_ACE|ACE_INHERIT_ONLY_ACE)
/* cmd args to acl(2) for aclent_t */
Index: sys/kern/subr_acl_nfs4.c
===================================================================
--- sys/kern/subr_acl_nfs4.c
+++ sys/kern/subr_acl_nfs4.c
@@ -1068,7 +1068,9 @@
child_aclp->acl_cnt++;
entry->ae_flags &= ~ACL_ENTRY_INHERIT_ONLY;
-
+
+ entry->ae_flags |= ACL_ENTRY_INHERITED;
+
/*
* If the type of the ACE is neither ALLOW nor DENY,
* then leave it as it is and proceed to the next one.
Index: sys/sys/acl.h
===================================================================
--- sys/sys/acl.h
+++ sys/sys/acl.h
@@ -246,17 +246,18 @@
#define ACL_ENTRY_FILE_INHERIT 0x0001
#define ACL_ENTRY_DIRECTORY_INHERIT 0x0002
#define ACL_ENTRY_NO_PROPAGATE_INHERIT 0x0004
-#define ACL_ENTRY_INHERIT_ONLY 0x0008
-#define ACL_ENTRY_SUCCESSFUL_ACCESS 0x0010
-#define ACL_ENTRY_FAILED_ACCESS 0x0020
-
-#define ACL_FLAGS_BITS (ACL_ENTRY_FILE_INHERIT | \
- ACL_ENTRY_DIRECTORY_INHERIT | ACL_ENTRY_NO_PROPAGATE_INHERIT | \
- ACL_ENTRY_INHERIT_ONLY | ACL_ENTRY_SUCCESSFUL_ACCESS | \
- ACL_ENTRY_FAILED_ACCESS)
-
-/*
- * Undefined value in ae_id field. ae_id should be set to this value
+#define ACL_ENTRY_INHERIT_ONLY 0x0008
+#define ACL_ENTRY_SUCCESSFUL_ACCESS 0x0010
+#define ACL_ENTRY_FAILED_ACCESS 0x0020
+#define ACL_ENTRY_INHERITED 0x0080
+
+#define ACL_FLAGS_BITS (ACL_ENTRY_FILE_INHERIT | \
+ ACL_ENTRY_DIRECTORY_INHERIT | ACL_ENTRY_NO_PROPAGATE_INHERIT | \
+ ACL_ENTRY_INHERIT_ONLY | ACL_ENTRY_SUCCESSFUL_ACCESS | \
+ ACL_ENTRY_FAILED_ACCESS | ACL_ENTRY_INHERITED)
+
+/*
+ * Undefined value in ae_id field. ae_id should be set to this value
* iff ae_tag is ACL_USER_OBJ, ACL_GROUP_OBJ, ACL_OTHER or ACL_EVERYONE.
*/
#define ACL_UNDEFINED_ID ((uid_t)-1)

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 26, 8:29 AM (5 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30373813
Default Alt Text
D3540.id8432.diff (5 KB)

Event Timeline