Commit a0d042f8 authored by Chuck Lever's avatar Chuck Lever

NFSD: Clean up nfsd4_encode_rdattr_error()

No need for specialized code here, as this function is invoked only
rarely. Convert it to encode to xdr_stream using conventional XDR
helpers.
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent a0f3c835
......@@ -3726,21 +3726,22 @@ nfsd4_encode_entry4_fattr(struct nfsd4_readdir *cd, const char *name,
return nfserr;
}
static __be32 *
nfsd4_encode_rdattr_error(struct xdr_stream *xdr, __be32 nfserr)
static __be32
nfsd4_encode_entry4_rdattr_error(struct xdr_stream *xdr, __be32 nfserr)
{
__be32 *p;
p = xdr_reserve_space(xdr, 20);
if (!p)
return NULL;
*p++ = htonl(2);
*p++ = htonl(FATTR4_WORD0_RDATTR_ERROR); /* bmval0 */
*p++ = htonl(0); /* bmval1 */
__be32 status;
*p++ = htonl(4); /* attribute length */
*p++ = nfserr; /* no htonl */
return p;
/* attrmask */
status = nfsd4_encode_bitmap4(xdr, FATTR4_WORD0_RDATTR_ERROR, 0, 0);
if (status != nfs_ok)
return status;
/* attr_vals */
if (xdr_stream_encode_u32(xdr, XDR_UNIT) != XDR_UNIT)
return nfserr_resource;
/* rdattr_error */
if (xdr_stream_encode_be32(xdr, nfserr) != XDR_UNIT)
return nfserr_resource;
return nfs_ok;
}
static int
......@@ -3812,8 +3813,7 @@ nfsd4_encode_entry4(void *ccdv, const char *name, int namlen,
*/
if (!(cd->rd_bmval[0] & FATTR4_WORD0_RDATTR_ERROR))
goto fail;
p = nfsd4_encode_rdattr_error(xdr, nfserr);
if (p == NULL) {
if (nfsd4_encode_entry4_rdattr_error(xdr, nfserr)) {
nfserr = nfserr_toosmall;
goto fail;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment