diff options
author | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:49:55 -0500 |
---|---|---|
committer | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:50:28 -0500 |
commit | fb045adb99d9b7c562dc7fef834857f78249daa1 (patch) | |
tree | 1fd6a4024fffeec568abe100d730589bfdb81c38 /fs/gfs2 | |
parent | 5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff (diff) |
fs: dcache reduce branches in lookup path
Reduce some branches and memory accesses in dcache lookup by adding dentry
flags to indicate common d_ops are set, rather than having to check them.
This saves a pointer memory access (dentry->d_op) in common path lookup
situations, and saves another pointer load and branch in cases where we
have d_op but not the particular operation.
Patched with:
git grep -E '[.>]([[:space:]])*d_op([[:space:]])*=' | xargs sed -e 's/\([^\t ]*\)->d_op = \(.*\);/d_set_d_op(\1, \2);/' -e 's/\([^\t ]*\)\.d_op = \(.*\);/d_set_d_op(\&\1, \2);/' -i
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/export.c | 4 | ||||
-rw-r--r-- | fs/gfs2/ops_fstype.c | 2 | ||||
-rw-r--r-- | fs/gfs2/ops_inode.c | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/fs/gfs2/export.c b/fs/gfs2/export.c index 5ab3839dfcb9..97012ecff560 100644 --- a/fs/gfs2/export.c +++ b/fs/gfs2/export.c | |||
@@ -130,7 +130,7 @@ static struct dentry *gfs2_get_parent(struct dentry *child) | |||
130 | 130 | ||
131 | dentry = d_obtain_alias(gfs2_lookupi(child->d_inode, &gfs2_qdotdot, 1)); | 131 | dentry = d_obtain_alias(gfs2_lookupi(child->d_inode, &gfs2_qdotdot, 1)); |
132 | if (!IS_ERR(dentry)) | 132 | if (!IS_ERR(dentry)) |
133 | dentry->d_op = &gfs2_dops; | 133 | d_set_d_op(dentry, &gfs2_dops); |
134 | return dentry; | 134 | return dentry; |
135 | } | 135 | } |
136 | 136 | ||
@@ -158,7 +158,7 @@ static struct dentry *gfs2_get_dentry(struct super_block *sb, | |||
158 | out_inode: | 158 | out_inode: |
159 | dentry = d_obtain_alias(inode); | 159 | dentry = d_obtain_alias(inode); |
160 | if (!IS_ERR(dentry)) | 160 | if (!IS_ERR(dentry)) |
161 | dentry->d_op = &gfs2_dops; | 161 | d_set_d_op(dentry, &gfs2_dops); |
162 | return dentry; | 162 | return dentry; |
163 | } | 163 | } |
164 | 164 | ||
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index 3eb1393f7b81..2aeabd4218cc 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c | |||
@@ -440,7 +440,7 @@ static int gfs2_lookup_root(struct super_block *sb, struct dentry **dptr, | |||
440 | iput(inode); | 440 | iput(inode); |
441 | return -ENOMEM; | 441 | return -ENOMEM; |
442 | } | 442 | } |
443 | dentry->d_op = &gfs2_dops; | 443 | d_set_d_op(dentry, &gfs2_dops); |
444 | *dptr = dentry; | 444 | *dptr = dentry; |
445 | return 0; | 445 | return 0; |
446 | } | 446 | } |
diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c index 12cbea7502c2..f28f89796f4d 100644 --- a/fs/gfs2/ops_inode.c +++ b/fs/gfs2/ops_inode.c | |||
@@ -106,7 +106,7 @@ static struct dentry *gfs2_lookup(struct inode *dir, struct dentry *dentry, | |||
106 | { | 106 | { |
107 | struct inode *inode = NULL; | 107 | struct inode *inode = NULL; |
108 | 108 | ||
109 | dentry->d_op = &gfs2_dops; | 109 | d_set_d_op(dentry, &gfs2_dops); |
110 | 110 | ||
111 | inode = gfs2_lookupi(dir, &dentry->d_name, 0); | 111 | inode = gfs2_lookupi(dir, &dentry->d_name, 0); |
112 | if (inode && IS_ERR(inode)) | 112 | if (inode && IS_ERR(inode)) |