mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 04:33:26 +02:00
NFSD: Update the NFSv2 stat encoder to use struct xdr_stream
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
@@ -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] = {
|
|||||||
[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] = {
|
|||||||
[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] = {
|
|||||||
[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] = {
|
|||||||
[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[] = {
|
|||||||
* 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)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
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 *);
|
|||||||
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 *);
|
||||||
|
Reference in New Issue
Block a user