summaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4xdr.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2010-11-20 14:26:44 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2010-11-22 13:24:48 -0500
commit0b26a0bf6ff398185546432420bb772bcfdf8d94 (patch)
tree705b94c8662cf18cf8cd18c6b8c68d751d87acb7 /fs/nfs/nfs4xdr.c
parent3020093f578fb6c9acc6914dfd887a1ebd1db659 (diff)
downloadlinux-0b26a0bf6ff398185546432420bb772bcfdf8d94.tar.gz
linux-0b26a0bf6ff398185546432420bb772bcfdf8d94.tar.bz2
linux-0b26a0bf6ff398185546432420bb772bcfdf8d94.zip
NFS: Ensure we return the dirent->d_type when it is known
Store the dirent->d_type in the struct nfs_cache_array_entry so that we can use it in getdents() calls. This fixes a regression with the new readdir code. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4xdr.c')
-rw-r--r--fs/nfs/nfs4xdr.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index a3b39cbc90f9..9f1826b012e6 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -6208,6 +6208,10 @@ __be32 *nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,
if (entry->fattr->valid & NFS_ATTR_FATTR_FILEID)
entry->ino = entry->fattr->fileid;
+ entry->d_type = DT_UNKNOWN;
+ if (entry->fattr->valid & NFS_ATTR_FATTR_TYPE)
+ entry->d_type = nfs_umode_to_dtype(entry->fattr->mode);
+
if (verify_attr_len(xdr, p, len) < 0)
goto out_overflow;