NFSv4.1: allow nfs_fhget to succeed with mounted on fileid
Commit 28331a46d8
"Ensure we request the
ordinary fileid when doing readdirplus"
changed the meaning of NFS_ATTR_FATTR_FILEID which used to be set when
FATTR4_WORD1_MOUNTED_ON_FILED was requested.
Allow nfs_fhget to succeed with only a mounted on fileid when crossing
a mountpoint or a referral.
Ask for the fileid of the absent file system if mounted_on_fileid is not
supported.
Signed-off-by: Andy Adamson <andros@netapp.com>
cc:stable@kernel.org [2.6.39]
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
committed by
Trond Myklebust
parent
1d92a08da2
commit
533eb4611c
@@ -45,6 +45,17 @@ static inline void nfs_attr_check_mountpoint(struct super_block *parent, struct
|
||||
fattr->valid |= NFS_ATTR_FATTR_MOUNTPOINT;
|
||||
}
|
||||
|
||||
static inline int nfs_attr_use_mounted_on_fileid(struct nfs_fattr *fattr)
|
||||
{
|
||||
if (((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) == 0) ||
|
||||
(((fattr->valid & NFS_ATTR_FATTR_MOUNTPOINT) == 0) &&
|
||||
((fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) == 0)))
|
||||
return 0;
|
||||
|
||||
fattr->fileid = fattr->mounted_on_fileid;
|
||||
return 1;
|
||||
}
|
||||
|
||||
struct nfs_clone_mount {
|
||||
const struct super_block *sb;
|
||||
const struct dentry *dentry;
|
||||
|
Reference in New Issue
Block a user