PERFORCE change 162722 for review

Edward Tomasz Napierala trasz at FreeBSD.org
Mon May 25 15:02:53 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=162722

Change 162722 by trasz at trasz_victim on 2009/05/25 15:02:38

	Simplify the ZFS ACL support.
	
	Submitted by:	pjd

Affected files ...

.. //depot/projects/soc2008/trasz_nfs4acl/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#23 edit

Differences ...

==== //depot/projects/soc2008/trasz_nfs4acl/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#23 (text+ko) ====

@@ -4801,36 +4801,18 @@
 {
 	int		error;
 	vsecattr_t      vsecattr;
-	int		aclbsize;	/* size of acl list in bytes */
 
 	if (ap->a_type != ACL_TYPE_NFS4)
 		return (EOPNOTSUPP);
 
-	/* Mostly taken from common/syscall/acl.c. */
-
 	vsecattr.vsa_mask = VSA_ACE | VSA_ACECNT;
 	if (error = zfs_getsecattr(ap->a_vp, &vsecattr, 0, ap->a_cred, NULL))
 		return (error);
 
-	aclbsize = vsecattr.vsa_aclcnt * sizeof (ace_t);
-	if (vsecattr.vsa_aclcnt > ACL_MAX_ENTRIES) {
-		printf("GETACL: no space\n");
-		error = ENOSPC;
-		goto errout;
-	}
-
 	error = acl_from_aces(ap->a_aclp, vsecattr.vsa_aclentp, vsecattr.vsa_aclcnt);
-	if (error != 0)
-		goto errout;
-
-	if (vsecattr.vsa_aclcnt != 0)
-		kmem_free(vsecattr.vsa_aclentp, vsecattr.vsa_aclentsz);
-
-	return (0);
+        if (vsecattr.vsa_aclentp != NULL)
+                kmem_free(vsecattr.vsa_aclentp, vsecattr.vsa_aclentsz);
 
-errout:
-        if (aclbsize != 0 && vsecattr.vsa_aclentp != NULL)
-                kmem_free(vsecattr.vsa_aclentp, aclbsize);
         return (error);
 }
 
@@ -4861,7 +4843,7 @@
 	 * entries at the end.  Don't allow for setting an ACL that would
 	 * cause chmod(2) to run out of ACL entries.
 	 */
-	if (inkernelacl->acl_cnt * 2 + 6 > ACL_MAX_ENTRIES)
+	if (ap->a_aclp->acl_cnt * 2 + 6 > ACL_MAX_ENTRIES)
 		return (ENOSPC);
 
 	vsecattr.vsa_mask = VSA_ACE;
@@ -4871,13 +4853,10 @@
 	vsecattr.vsa_aclentsz = aclbsize;
 
 	aces_from_acl(vsecattr.vsa_aclentp, &vsecattr.vsa_aclcnt, ap->a_aclp);
-	if (error = zfs_setsecattr(ap->a_vp, &vsecattr, 0, ap->a_cred, NULL)) {
-		kmem_free(aaclp, aclbsize);
-		return (error);
-	}
+	error = zfs_setsecattr(ap->a_vp, &vsecattr, 0, ap->a_cred, NULL);
+	kmem_free(aaclp, aclbsize);
 
-	kmem_free(aaclp, aclbsize);
-	return (0);
+	return (error);
 }
 
 int
@@ -4890,10 +4869,6 @@
 		struct thread *td;
 	} */ *ap;
 {
-	if (ap->a_type != ACL_TYPE_NFS4)
-		return (EOPNOTSUPP);
-
-	printf("ACLCHECK\n");
 
 	return (EOPNOTSUPP);
 }


More information about the p4-projects mailing list