xfs
[Top] [All Lists]

Re: [PATCH 11/11] xfs: increase number of ACL entries for V5 superblocks

To: Brian Foster <bfoster@xxxxxxxxxx>
Subject: Re: [PATCH 11/11] xfs: increase number of ACL entries for V5 superblocks
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Wed, 22 May 2013 06:27:14 +1000
Cc: xfs@xxxxxxxxxxx, bpm@xxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <519B7DE9.8030604@xxxxxxxxxx>
References: <1369123330-9579-1-git-send-email-david@xxxxxxxxxxxxx> <1369123330-9579-12-git-send-email-david@xxxxxxxxxxxxx> <519B7DE9.8030604@xxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Tue, May 21, 2013 at 10:00:09AM -0400, Brian Foster wrote:
> On 05/21/2013 04:02 AM, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@xxxxxxxxxx>
> > 
> > The limit of 25 ACL entries is arbitrary, but baked into the on-disk
> > format.  For version 5 superblocks, increase it to the maximum nuber
> > of ACLs that can fit into a single xattr.
> > 
> > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> > ---
> >  fs/xfs/xfs_acl.c |   31 ++++++++++++++++++-------------
> >  fs/xfs/xfs_acl.h |   30 +++++++++++++++++++++++-------
> >  2 files changed, 41 insertions(+), 20 deletions(-)
> > 
> ...
> > diff --git a/fs/xfs/xfs_acl.h b/fs/xfs/xfs_acl.h
> > index 39632d9..5310a52 100644
> > --- a/fs/xfs/xfs_acl.h
> > +++ b/fs/xfs/xfs_acl.h
> > @@ -22,19 +22,35 @@ struct inode;
> >  struct posix_acl;
> >  struct xfs_inode;
> >  
> > -#define XFS_ACL_MAX_ENTRIES 25
> >  #define XFS_ACL_NOT_PRESENT (-1)
> >  
> >  /* On-disk XFS access control list structure */
> > +struct xfs_acl_entry {
> > +   __be32  ae_tag;
> > +   __be32  ae_id;
> > +   __be16  ae_perm;
> > +   __be16  ae_pad;         /* fill the implicit hole in the structure */
> > +};
> > +
> >  struct xfs_acl {
> > -   __be32          acl_cnt;
> > -   struct xfs_acl_entry {
> > -           __be32  ae_tag;
> > -           __be32  ae_id;
> > -           __be16  ae_perm;
> > -   } acl_entry[XFS_ACL_MAX_ENTRIES];
> > +   __be32                  acl_cnt;
> > +   struct xfs_acl_entry    acl_entry[0];
> >  };
> >  
> > +/*
> > + * The number of ACL entries allowed is defined by the on-disk format.
> > + * For v4 superblocks, that is limited to 25 entries. For v5 superblocks, 
> > it is
> > + * limited only by the maximum size of the xattr that stores the 
> > information.
> > + */
> > +#define XFS_ACL_MAX_ENTRIES(mp)    \
> > +   (xfs_sb_version_hascrc(&mp->m_sb) \
> > +      ?  (XATTR_SIZE_MAX - sizeof(__be32) / sizeof(struct xfs_acl_entry)) \
>                                       
> It looks like this should be:
> 
>       (XATTR_SIZE_MAX - sizeof(__be32)) / sizeof(struct xfs_acl_entry)
> 
> (i.e., misplaced parens)

Yup, good catch.

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>