xfs
[Top] [All Lists]

[PATCH 3/3] xfs: optimize the negative xattr caching

To: xfs@xxxxxxxxxxx
Subject: [PATCH 3/3] xfs: optimize the negative xattr caching
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Tue, 26 Jul 2011 11:07:29 -0400
In-reply-to: <20110726150633.GA17400@xxxxxxxxxxxxx>
References: <20110726150633.GA17400@xxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
Since the addition of file capabilities every write needs to read xattrs to
check if we have any capabilities to clear.  In Linux 3.0 Andi Kleen added
a flag to cache the fact that we do not have any attributes on an inode.
Make sure to already mark a file as not having any attributes when reading
it from disk in case it doesn't even have an attribute fork.  Based on an
earlier patch from Andi Kleen.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Index: linux-2.6/fs/xfs/linux-2.6/xfs_iops.c
===================================================================
--- linux-2.6.orig/fs/xfs/linux-2.6/xfs_iops.c  2011-07-25 23:49:23.011563852 
+0200
+++ linux-2.6/fs/xfs/linux-2.6/xfs_iops.c       2011-07-25 23:49:50.281563691 
+0200
@@ -1194,9 +1194,14 @@ xfs_setup_inode(
                break;
        }
 
-       /* if there is no attribute fork no ACL can exist on this inode */
-       if (!XFS_IFORK_Q(ip))
+       /*
+        * If there is no attribute fork no ACL can exist on this inode,
+        * and it can't have any file capabilities attached to it either.
+        */
+       if (!XFS_IFORK_Q(ip)) {
+               inode_has_no_xattr(inode);
                cache_no_acl(inode);
+       }
 
        xfs_iflags_clear(ip, XFS_INEW);
        barrier();

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