Commit a887eaed authored by Chuck Lever's avatar Chuck Lever

NFSD: Update the NFSv2 stat encoder to use struct xdr_stream

Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent 76ed0dd9
...@@ -736,7 +736,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { ...@@ -736,7 +736,7 @@ static const struct svc_procedure nfsd_procedures2[18] = {
[NFSPROC_REMOVE] = { [NFSPROC_REMOVE] = {
.pc_func = nfsd_proc_remove, .pc_func = nfsd_proc_remove,
.pc_decode = nfssvc_decode_diropargs, .pc_decode = nfssvc_decode_diropargs,
.pc_encode = nfssvc_encode_stat, .pc_encode = nfssvc_encode_statres,
.pc_argsize = sizeof(struct nfsd_diropargs), .pc_argsize = sizeof(struct nfsd_diropargs),
.pc_ressize = sizeof(struct nfsd_stat), .pc_ressize = sizeof(struct nfsd_stat),
.pc_cachetype = RC_REPLSTAT, .pc_cachetype = RC_REPLSTAT,
...@@ -746,7 +746,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { ...@@ -746,7 +746,7 @@ static const struct svc_procedure nfsd_procedures2[18] = {
[NFSPROC_RENAME] = { [NFSPROC_RENAME] = {
.pc_func = nfsd_proc_rename, .pc_func = nfsd_proc_rename,
.pc_decode = nfssvc_decode_renameargs, .pc_decode = nfssvc_decode_renameargs,
.pc_encode = nfssvc_encode_stat, .pc_encode = nfssvc_encode_statres,
.pc_argsize = sizeof(struct nfsd_renameargs), .pc_argsize = sizeof(struct nfsd_renameargs),
.pc_ressize = sizeof(struct nfsd_stat), .pc_ressize = sizeof(struct nfsd_stat),
.pc_cachetype = RC_REPLSTAT, .pc_cachetype = RC_REPLSTAT,
...@@ -756,7 +756,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { ...@@ -756,7 +756,7 @@ static const struct svc_procedure nfsd_procedures2[18] = {
[NFSPROC_LINK] = { [NFSPROC_LINK] = {
.pc_func = nfsd_proc_link, .pc_func = nfsd_proc_link,
.pc_decode = nfssvc_decode_linkargs, .pc_decode = nfssvc_decode_linkargs,
.pc_encode = nfssvc_encode_stat, .pc_encode = nfssvc_encode_statres,
.pc_argsize = sizeof(struct nfsd_linkargs), .pc_argsize = sizeof(struct nfsd_linkargs),
.pc_ressize = sizeof(struct nfsd_stat), .pc_ressize = sizeof(struct nfsd_stat),
.pc_cachetype = RC_REPLSTAT, .pc_cachetype = RC_REPLSTAT,
...@@ -766,7 +766,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { ...@@ -766,7 +766,7 @@ static const struct svc_procedure nfsd_procedures2[18] = {
[NFSPROC_SYMLINK] = { [NFSPROC_SYMLINK] = {
.pc_func = nfsd_proc_symlink, .pc_func = nfsd_proc_symlink,
.pc_decode = nfssvc_decode_symlinkargs, .pc_decode = nfssvc_decode_symlinkargs,
.pc_encode = nfssvc_encode_stat, .pc_encode = nfssvc_encode_statres,
.pc_argsize = sizeof(struct nfsd_symlinkargs), .pc_argsize = sizeof(struct nfsd_symlinkargs),
.pc_ressize = sizeof(struct nfsd_stat), .pc_ressize = sizeof(struct nfsd_stat),
.pc_cachetype = RC_REPLSTAT, .pc_cachetype = RC_REPLSTAT,
...@@ -787,7 +787,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { ...@@ -787,7 +787,7 @@ static const struct svc_procedure nfsd_procedures2[18] = {
[NFSPROC_RMDIR] = { [NFSPROC_RMDIR] = {
.pc_func = nfsd_proc_rmdir, .pc_func = nfsd_proc_rmdir,
.pc_decode = nfssvc_decode_diropargs, .pc_decode = nfssvc_decode_diropargs,
.pc_encode = nfssvc_encode_stat, .pc_encode = nfssvc_encode_statres,
.pc_argsize = sizeof(struct nfsd_diropargs), .pc_argsize = sizeof(struct nfsd_diropargs),
.pc_ressize = sizeof(struct nfsd_stat), .pc_ressize = sizeof(struct nfsd_stat),
.pc_cachetype = RC_REPLSTAT, .pc_cachetype = RC_REPLSTAT,
......
...@@ -26,6 +26,19 @@ static u32 nfs_ftypes[] = { ...@@ -26,6 +26,19 @@ static u32 nfs_ftypes[] = {
* Basic NFSv2 data types (RFC 1094 Section 2.3) * Basic NFSv2 data types (RFC 1094 Section 2.3)
*/ */
static bool
svcxdr_encode_stat(struct xdr_stream *xdr, __be32 status)
{
__be32 *p;
p = xdr_reserve_space(xdr, sizeof(status));
if (!p)
return false;
*p = status;
return true;
}
/** /**
* svcxdr_decode_fhandle - Decode an NFSv2 file handle * svcxdr_decode_fhandle - Decode an NFSv2 file handle
* @xdr: XDR stream positioned at an encoded NFSv2 FH * @xdr: XDR stream positioned at an encoded NFSv2 FH
...@@ -390,12 +403,12 @@ nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) ...@@ -390,12 +403,12 @@ nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p)
*/ */
int int
nfssvc_encode_stat(struct svc_rqst *rqstp, __be32 *p) nfssvc_encode_statres(struct svc_rqst *rqstp, __be32 *p)
{ {
struct xdr_stream *xdr = &rqstp->rq_res_stream;
struct nfsd_stat *resp = rqstp->rq_resp; struct nfsd_stat *resp = rqstp->rq_resp;
*p++ = resp->status; return svcxdr_encode_stat(xdr, resp->status);
return xdr_ressize_check(rqstp, p);
} }
int int
......
...@@ -147,7 +147,7 @@ int nfssvc_decode_renameargs(struct svc_rqst *, __be32 *); ...@@ -147,7 +147,7 @@ int nfssvc_decode_renameargs(struct svc_rqst *, __be32 *);
int nfssvc_decode_linkargs(struct svc_rqst *, __be32 *); int nfssvc_decode_linkargs(struct svc_rqst *, __be32 *);
int nfssvc_decode_symlinkargs(struct svc_rqst *, __be32 *); int nfssvc_decode_symlinkargs(struct svc_rqst *, __be32 *);
int nfssvc_decode_readdirargs(struct svc_rqst *, __be32 *); int nfssvc_decode_readdirargs(struct svc_rqst *, __be32 *);
int nfssvc_encode_stat(struct svc_rqst *, __be32 *); int nfssvc_encode_statres(struct svc_rqst *, __be32 *);
int nfssvc_encode_attrstat(struct svc_rqst *, __be32 *); int nfssvc_encode_attrstat(struct svc_rqst *, __be32 *);
int nfssvc_encode_diropres(struct svc_rqst *, __be32 *); int nfssvc_encode_diropres(struct svc_rqst *, __be32 *);
int nfssvc_encode_readlinkres(struct svc_rqst *, __be32 *); int nfssvc_encode_readlinkres(struct svc_rqst *, __be32 *);
......
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