diff options
author | J. Bruce Fields <bfields@redhat.com> | 2014-01-16 17:17:31 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-08-07 14:40:10 -0400 |
commit | 8d80d7dabe9668965574669afbd31733f7b0fe9b (patch) | |
tree | 198a37bc2a9a0b89639ed0107eb02853240f544c /fs/dcache.c | |
parent | 52ed46f0fa88243887b823d24ccb9fcf47a735b3 (diff) |
dcache: d_find_alias needn't recheck IS_ROOT && DCACHE_DISCONNECTED
If we get to this point and discover the dentry is not a root dentry, or
not DCACHE_DISCONNECTED--great, we always prefer that anyway.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/dcache.c')
-rw-r--r-- | fs/dcache.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/fs/dcache.c b/fs/dcache.c index 5c5f3bd9af5f..85a2aad3dcb3 100644 --- a/fs/dcache.c +++ b/fs/dcache.c | |||
@@ -765,12 +765,9 @@ again: | |||
765 | alias = discon_alias; | 765 | alias = discon_alias; |
766 | spin_lock(&alias->d_lock); | 766 | spin_lock(&alias->d_lock); |
767 | if (S_ISDIR(inode->i_mode) || !d_unhashed(alias)) { | 767 | if (S_ISDIR(inode->i_mode) || !d_unhashed(alias)) { |
768 | if (IS_ROOT(alias) && | 768 | __dget_dlock(alias); |
769 | (alias->d_flags & DCACHE_DISCONNECTED)) { | 769 | spin_unlock(&alias->d_lock); |
770 | __dget_dlock(alias); | 770 | return alias; |
771 | spin_unlock(&alias->d_lock); | ||
772 | return alias; | ||
773 | } | ||
774 | } | 771 | } |
775 | spin_unlock(&alias->d_lock); | 772 | spin_unlock(&alias->d_lock); |
776 | goto again; | 773 | goto again; |