aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2010-10-10 05:36:21 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2010-10-25 21:26:12 -0400
commitbe148247cfbe2422f5709e77d9c3e10b8a6394da (patch)
treef04605bb5ea21cefd455b6fd81c51d8bb02c1521 /fs
parent85fe4025c616a7c0ed07bc2fc8c5371b07f3888c (diff)
fs: take dcache_lock inside __d_path
All callers take dcache_lock just around the call to __d_path, so take the lock into it in preparation of getting rid of dcache_lock. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r--fs/dcache.c6
-rw-r--r--fs/seq_file.c2
2 files changed, 4 insertions, 4 deletions
diff --git a/fs/dcache.c b/fs/dcache.c
index 83293be48149..54f93f5e6b0f 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1994,7 +1994,7 @@ global_root:
1994 * Returns a pointer into the buffer or an error code if the 1994 * Returns a pointer into the buffer or an error code if the
1995 * path was too long. 1995 * path was too long.
1996 * 1996 *
1997 * "buflen" should be positive. Caller holds the dcache_lock. 1997 * "buflen" should be positive.
1998 * 1998 *
1999 * If path is not reachable from the supplied root, then the value of 1999 * If path is not reachable from the supplied root, then the value of
2000 * root is changed (without modifying refcounts). 2000 * root is changed (without modifying refcounts).
@@ -2006,10 +2006,12 @@ char *__d_path(const struct path *path, struct path *root,
2006 int error; 2006 int error;
2007 2007
2008 prepend(&res, &buflen, "\0", 1); 2008 prepend(&res, &buflen, "\0", 1);
2009 spin_lock(&dcache_lock);
2009 error = prepend_path(path, root, &res, &buflen); 2010 error = prepend_path(path, root, &res, &buflen);
2011 spin_unlock(&dcache_lock);
2012
2010 if (error) 2013 if (error)
2011 return ERR_PTR(error); 2014 return ERR_PTR(error);
2012
2013 return res; 2015 return res;
2014} 2016}
2015 2017
diff --git a/fs/seq_file.c b/fs/seq_file.c
index 0e7cb1395a94..05d6b0e78c95 100644
--- a/fs/seq_file.c
+++ b/fs/seq_file.c
@@ -462,9 +462,7 @@ int seq_path_root(struct seq_file *m, struct path *path, struct path *root,
462 if (size) { 462 if (size) {
463 char *p; 463 char *p;
464 464
465 spin_lock(&dcache_lock);
466 p = __d_path(path, root, buf, size); 465 p = __d_path(path, root, buf, size);
467 spin_unlock(&dcache_lock);
468 res = PTR_ERR(p); 466 res = PTR_ERR(p);
469 if (!IS_ERR(p)) { 467 if (!IS_ERR(p)) {
470 char *end = mangle_path(buf, p, esc); 468 char *end = mangle_path(buf, p, esc);