From patchwork Tue Jul 20 09:31:07 2010
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [-V2,00/16] New ACL format for better NFSv4 acl interoperability
From: "Aneesh Kumar K.V"
X-Patchwork-Id: 59290
Message-Id:
To: Andreas Gruenbacher
Cc: sfrench@us.ibm.com, ffilz@us.ibm.com, adilger@sun.com,
sandeen@redhat.com, tytso@mit.edu, staubach@redhat.com,
bfields@citi.umich.edu, jlayton@redhat.com,
linux-fsdevel@vger.kernel.org, nfsv4@linux-nfs.org,
linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org
Date: Tue, 20 Jul 2010 15:01:07 +0530
On Mon, 19 Jul 2010 21:19:50 +0200, Andreas Gruenbacher wrote:
> Aneesh,
>
> here is a patch on top of the richacl-upstream queue.
>
> So far, we were assuming that acls are always masked, and the file masks
> could be set so that they would not mask any permissions. This is fine
> for permission checking, but richacl_apply_masks() didn't recognize when
> the file masks were set to mask nothing, and was still transforming such
> acls unnecessarily. This could lead to correct but surprising results.
>
> Instead of using a flag here we could check if the file masks are set to
> "ineffective" values, but that would require the same computation as
> richacl_compute_max_masks(), which can be a slow on large acls. It is a
> lot easier to instead remember if the file masks are "effective".
>
> (We still need to compute the file masks in nfsd where no file masks are
> supplied so that the file permission bits will be set to a reasonable
> value. user space will always pass valid file masks in, so we are covered
> in that side.)
We need to update ACL4_VALID_FLAGS to now consider ACL4_MASKED as a
valid flag. This is also needed for userspace. On a related note,
should we move ACL4_MASKED and ACL4_POSIX_MAPPED to be the higher
bits ? That would make sure we will be able to accomodate new flag
value NFSv4 define. Something like
-aneesh
---
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/linux/richacl.h b/include/linux/richacl.h
index 929cc32..ff3c12b 100644
--- a/include/linux/richacl.h
+++ b/include/linux/richacl.h
@@ -50,16 +50,17 @@ struct richacl {
/* a_flags values */
#define ACL4_AUTO_INHERIT 0x01
#define ACL4_PROTECTED 0x02
-/*#define ACL4_DEFAULTED 0x04*/
-#define ACL4_MASKED 0x08
-#define ACL4_POSIX_MAPPED 0x10
+#define ACL4_DEFAULTED 0x04
+/* flag value defined by Richacl */
+#define ACL4_MASKED 0x40
+#define ACL4_POSIX_MAPPED 0x80
#define ACL4_VALID_FLAGS ( \
ACL4_AUTO_INHERIT | \
ACL4_PROTECTED | \
+ ACL4_MASKED | \
ACL4_POSIX_MAPPED)
-
/* e_type values */
#define ACE4_ACCESS_ALLOWED_ACE_TYPE 0x0000
#define ACE4_ACCESS_DENIED_ACE_TYPE 0x0001