GFS2: Increase the max number of ACLs
authorBob Peterson <rpeterso@redhat.com>
Wed, 19 Mar 2014 13:10:21 +0000 (09:10 -0400)
committerSteven Whitehouse <swhiteho@redhat.com>
Wed, 19 Mar 2014 15:16:24 +0000 (15:16 +0000)
This patch increases the maximum number of ACLs from 25 to 300 for
a 4K block size. The value is adjusted accordingly if the block size
is smaller. Note that this is an arbitrary limit with a performance
tradeoff, and that the physical limit is slightly over 500.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/acl.c
fs/gfs2/acl.h

index 9c59ebe790b6ac9cae5f529ee2c9029e813b6fda..394dc5561842cf82f2890c6f02f388606d9b6301 100644 (file)
@@ -85,7 +85,7 @@ int gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 
        BUG_ON(name == NULL);
 
-       if (acl->a_count > GFS2_ACL_MAX_ENTRIES)
+       if (acl->a_count > GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode)))
                return -E2BIG;
 
        if (type == ACL_TYPE_ACCESS) {
index 301260c999ba994bbcab3af270962cd93058dcd9..2d65ec4cd4bef60b87c0291c9ef84ce3abcf65a2 100644 (file)
@@ -14,7 +14,7 @@
 
 #define GFS2_POSIX_ACL_ACCESS          "posix_acl_access"
 #define GFS2_POSIX_ACL_DEFAULT         "posix_acl_default"
-#define GFS2_ACL_MAX_ENTRIES           25
+#define GFS2_ACL_MAX_ENTRIES(sdp) ((300 << (sdp)->sd_sb.sb_bsize_shift) >> 12)
 
 extern struct posix_acl *gfs2_get_acl(struct inode *inode, int type);
 extern int gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type);