diff options
author | Christoph Hellwig <hch@infradead.org> | 2010-10-10 05:36:21 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-10-25 21:26:12 -0400 |
commit | be148247cfbe2422f5709e77d9c3e10b8a6394da (patch) | |
tree | f04605bb5ea21cefd455b6fd81c51d8bb02c1521 /fs | |
parent | 85fe4025c616a7c0ed07bc2fc8c5371b07f3888c (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.c | 6 | ||||
-rw-r--r-- | fs/seq_file.c | 2 |
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); |