aboutsummaryrefslogtreecommitdiffstats
path: root/fs/dcache.c
diff options
context:
space:
mode:
authorNick Piggin <npiggin@kernel.dk>2011-01-07 01:49:29 -0500
committerNick Piggin <npiggin@kernel.dk>2011-01-07 01:50:20 -0500
commitec2447c278ee973d35f38e53ca16ba7f965ae33d (patch)
tree5d17a0523c301b8c71c0f198ffe7782c5e9c0ea9 /fs/dcache.c
parentb1e6a015a580ad145689ad1d6b4aa0e03e6c868b (diff)
hostfs: simplify locking
Remove dcache_lock locking from hostfs filesystem, and move it into dcache helpers. All that is required is a coherent path name. Protection from concurrent modification of the namespace after path name generation is not provided in current code, because dcache_lock is dropped before the path is used. Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'fs/dcache.c')
-rw-r--r--fs/dcache.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/fs/dcache.c b/fs/dcache.c
index 6f59f375ed9d..61beb40dd6bf 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -2171,7 +2171,7 @@ char *dynamic_dname(struct dentry *dentry, char *buffer, int buflen,
2171/* 2171/*
2172 * Write full pathname from the root of the filesystem into the buffer. 2172 * Write full pathname from the root of the filesystem into the buffer.
2173 */ 2173 */
2174char *__dentry_path(struct dentry *dentry, char *buf, int buflen) 2174static char *__dentry_path(struct dentry *dentry, char *buf, int buflen)
2175{ 2175{
2176 char *end = buf + buflen; 2176 char *end = buf + buflen;
2177 char *retval; 2177 char *retval;
@@ -2198,7 +2198,18 @@ char *__dentry_path(struct dentry *dentry, char *buf, int buflen)
2198Elong: 2198Elong:
2199 return ERR_PTR(-ENAMETOOLONG); 2199 return ERR_PTR(-ENAMETOOLONG);
2200} 2200}
2201EXPORT_SYMBOL(__dentry_path); 2201
2202char *dentry_path_raw(struct dentry *dentry, char *buf, int buflen)
2203{
2204 char *retval;
2205
2206 spin_lock(&dcache_lock);
2207 retval = __dentry_path(dentry, buf, buflen);
2208 spin_unlock(&dcache_lock);
2209
2210 return retval;
2211}
2212EXPORT_SYMBOL(dentry_path_raw);
2202 2213
2203char *dentry_path(struct dentry *dentry, char *buf, int buflen) 2214char *dentry_path(struct dentry *dentry, char *buf, int buflen)
2204{ 2215{