[Linux-cachefs] [PATCH 6/6] Optimise d_find_alias() [try #7]

David Howells dhowells at redhat.com
Wed Mar 8 20:30:31 UTC 2006


The attached patch optimises d_find_alias() to only take the spinlock if
there's anything in the the inode's alias list. If there isn't, it returns NULL
immediately.

The following changes were made in [try #7]:

 (*) The memory barrier was removed.

Signed-Off-By: David Howells <dhowells at redhat.com>
---

 fs/dcache.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/dcache.c b/fs/dcache.c
index 9eb2698..bb309f5 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -325,10 +325,12 @@ static struct dentry * __d_find_alias(st
 
 struct dentry * d_find_alias(struct inode *inode)
 {
-	struct dentry *de;
-	spin_lock(&dcache_lock);
-	de = __d_find_alias(inode, 0);
-	spin_unlock(&dcache_lock);
+	struct dentry *de = NULL;
+	if (!list_empty(&inode->i_dentry)) {
+		spin_lock(&dcache_lock);
+		de = __d_find_alias(inode, 0);
+		spin_unlock(&dcache_lock);
+	}
 	return de;
 }
 




More information about the Linux-cachefs mailing list