diff options
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r-- | fs/nfs/inode.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 0d8302e59d69..ee13cb01b56e 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -888,7 +888,10 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr) | |||
888 | set_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode)); | 888 | set_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode)); |
889 | /* Deal with crossing mountpoints */ | 889 | /* Deal with crossing mountpoints */ |
890 | if (!nfs_fsid_equal(&NFS_SB(sb)->fsid, &fattr->fsid)) { | 890 | if (!nfs_fsid_equal(&NFS_SB(sb)->fsid, &fattr->fsid)) { |
891 | inode->i_op = &nfs_mountpoint_inode_operations; | 891 | if (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) |
892 | inode->i_op = &nfs_referral_inode_operations; | ||
893 | else | ||
894 | inode->i_op = &nfs_mountpoint_inode_operations; | ||
892 | inode->i_fop = NULL; | 895 | inode->i_fop = NULL; |
893 | } | 896 | } |
894 | } else if (S_ISLNK(inode->i_mode)) | 897 | } else if (S_ISLNK(inode->i_mode)) |