diff options
Diffstat (limited to 'fs/nfs/nfs4xdr.c')
| -rw-r--r-- | fs/nfs/nfs4xdr.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index f313c4cce7e..9f1826b012e 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -4518,7 +4518,7 @@ static int decode_readdir(struct xdr_stream *xdr, struct rpc_rqst *req, struct n  	xdr_read_pages(xdr, pglen); -	return 0; +	return pglen;  }  static int decode_readlink(struct xdr_stream *xdr, struct rpc_rqst *req) @@ -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; @@ -6221,7 +6225,7 @@ __be32 *nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,  out_overflow:  	print_overflow_msg(__func__, xdr); -	return ERR_PTR(-EIO); +	return ERR_PTR(-EAGAIN);  }  /*  |