Messages in this thread Patch in this message | | | From | David Howells <> | Subject | [PATCH 6/6] Optimise d_find_alias() [try #7] | Date | Wed, 08 Mar 2006 20:30:31 +0000 |
| |
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@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; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |