Re: [PATCH] xfs: short circuit xfs_get_acl() if no acl is possible

Darrick J. Wong
2019-05-08T20:12:58Z

On Wed, May 08, 2019 at 02:28:09PM -0500, Eric Sandeen wrote:
> If there are no attributes on the inode, don't go through the
> cost of memory allocation and callling xfs_attr_get when we
> already know we'll just get -ENOATTR.
>
> Reported-by: David Valin <dvalin@redhat.com>
> Suggested-by: Dave Chinner <david@fromorbit.com>
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
> ---
>
> diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
> index 8039e35147dd..b469b44e9e71 100644
> --- a/fs/xfs/xfs_acl.c
> +++ b/fs/xfs/xfs_acl.c
> @@ -132,6 +132,9 @@ xfs_get_acl(struct inode *inode, int type)
> BUG();
> }
>
> + if (!xfs_inode_hasattr(ip))
> + return NULL;

This isn't going to cause problems if someone's adding an ACL to the
inode at the same time, right?

I'm assuming that's the case since we only would load inodes when
setting up a vfs inode but before any userspace can get its sticky
fingers all over the inode, but it sure would be nice to know that
for sure. :)

--D

> +
> /*
> * If we have a cached ACLs value just return it, not need to
> * go out to the disk.
>