On Mon, 23 Feb 2015 19:14:56 -0500 Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> wrote: > When we call readdirplus, set the fileid normally returned by readdir > as the mounted-on-fileid, since that is commonly the case if there is > a mountpoint. To ensure that we get it right, we only set the flag if > the readdir fileid differs from the one returned in the readdirplus > attributes. > > This again means that we can avoid the issues described in commit > 2ef47eb1aee17 ("NFS: Fix use of nfs_attr_use_mounted_on_fileid()"), > which only fixed NFSv4. > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > --- > fs/nfs/nfs3xdr.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c > index 2a932fdc57cb..53852a4bd88b 100644 > --- a/fs/nfs/nfs3xdr.c > +++ b/fs/nfs/nfs3xdr.c > @@ -1987,6 +1987,11 @@ int nfs3_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry, > if (entry->fattr->valid & NFS_ATTR_FATTR_V3) > entry->d_type = nfs_umode_to_dtype(entry->fattr->mode); > > + if (entry->fattr->fileid != entry->ino) { > + entry->fattr->mounted_on_fileid = entry->ino; > + entry->fattr->valid |= NFS_ATTR_FATTR_MOUNTED_ON_FILEID; > + } > + > /* In fact, a post_op_fh3: */ > p = xdr_inline_decode(xdr, 4); > if (unlikely(p == NULL)) I like this! Reviewed-by: NeilBrown <neilb@xxxxxxx> if you like. Thanks, NeilBrown
Attachment:
pgpAVqxfcfKYV.pgp
Description: OpenPGP digital signature