diff options
author | J. Bruce Fields <bfields@redhat.com> | 2014-02-14 23:35:37 +0100 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-08-07 20:40:10 +0200 |
commit | 1a0a397e41cb1bf70cfe45fd0eeff08c7c501ec0 (patch) | |
tree | c02c59997a3849bb1bfdcc3ac371bb1e4d2f81bc /fs/ceph/super.c | |
parent | dcache: d_splice_alias should ignore DCACHE_DISCONNECTED (diff) | |
download | linux-1a0a397e41cb1bf70cfe45fd0eeff08c7c501ec0.tar.xz linux-1a0a397e41cb1bf70cfe45fd0eeff08c7c501ec0.zip |
dcache: d_obtain_alias callers don't all want DISCONNECTED
There are a few d_obtain_alias callers that are using it to get the
root of a filesystem which may already have an alias somewhere else.
This is not the same as the filehandle-lookup case, and none of them
actually need DCACHE_DISCONNECTED set.
It isn't really a serious problem, but it would really be clearer if we
reserved DCACHE_DISCONNECTED for those cases where it's actually needed.
In the btrfs case this was causing a spurious printk from
nfsd/nfsfh.c:fh_verify when it found an unexpected DCACHE_DISCONNECTED
dentry. Josef worked around this by unsetting DCACHE_DISCONNECTED
manually in 3a0dfa6a12e "Btrfs: unset DCACHE_DISCONNECTED when mounting
default subvol", and this replaces that workaround.
Cc: Josef Bacik <jbacik@fb.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/ceph/super.c')
-rw-r--r-- | fs/ceph/super.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 06150fd745ac..f6e12377335c 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -755,7 +755,7 @@ static struct dentry *open_root_dentry(struct ceph_fs_client *fsc, goto out; } } else { - root = d_obtain_alias(inode); + root = d_obtain_root(inode); } ceph_init_dentry(root); dout("open_root_inode success, root dentry is %p\n", root); |