[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