diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2010-12-14 09:59:29 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2010-12-16 12:37:25 -0500 |
commit | bf2695516db982e90a22fc94f93491b481796bb1 (patch) | |
tree | 367bf134ef892bfc3fcd2c4fe676b14102d97467 /fs/nfsd | |
parent | 9f06c719f474be7003763284a990bed6377bb0d4 (diff) |
SUNRPC: New xdr_streams XDR decoder API
Now that all client-side XDR decoder routines use xdr_streams, there
should be no need to support the legacy calling sequence [rpc_rqst *,
__be32 *, RPC res *] anywhere. We can construct an xdr_stream in the
generic RPC code, instead of in each decoder function.
This is a refactoring change. It should not cause different behavior.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfs4callback.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c index c363efda8ecf..21a63da305ff 100644 --- a/fs/nfsd/nfs4callback.c +++ b/fs/nfsd/nfs4callback.c | |||
@@ -533,7 +533,8 @@ static void nfs4_xdr_enc_cb_recall(struct rpc_rqst *req, struct xdr_stream *xdr, | |||
533 | * Protocol". | 533 | * Protocol". |
534 | */ | 534 | */ |
535 | 535 | ||
536 | static int nfs4_xdr_dec_cb_null(struct rpc_rqst *req, __be32 *p, void *__unused) | 536 | static int nfs4_xdr_dec_cb_null(struct rpc_rqst *req, struct xdr_stream *xdr, |
537 | void *__unused) | ||
537 | { | 538 | { |
538 | return 0; | 539 | return 0; |
539 | } | 540 | } |
@@ -541,26 +542,25 @@ static int nfs4_xdr_dec_cb_null(struct rpc_rqst *req, __be32 *p, void *__unused) | |||
541 | /* | 542 | /* |
542 | * 20.2. Operation 4: CB_RECALL - Recall a Delegation | 543 | * 20.2. Operation 4: CB_RECALL - Recall a Delegation |
543 | */ | 544 | */ |
544 | static int nfs4_xdr_dec_cb_recall(struct rpc_rqst *rqstp, __be32 *p, | 545 | static int nfs4_xdr_dec_cb_recall(struct rpc_rqst *rqstp, |
546 | struct xdr_stream *xdr, | ||
545 | struct nfsd4_callback *cb) | 547 | struct nfsd4_callback *cb) |
546 | { | 548 | { |
547 | struct xdr_stream xdr; | ||
548 | struct nfs4_cb_compound_hdr hdr; | 549 | struct nfs4_cb_compound_hdr hdr; |
549 | enum nfsstat4 nfserr; | 550 | enum nfsstat4 nfserr; |
550 | int status; | 551 | int status; |
551 | 552 | ||
552 | xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); | 553 | status = decode_cb_compound4res(xdr, &hdr); |
553 | status = decode_cb_compound4res(&xdr, &hdr); | ||
554 | if (unlikely(status)) | 554 | if (unlikely(status)) |
555 | goto out; | 555 | goto out; |
556 | 556 | ||
557 | if (cb != NULL) { | 557 | if (cb != NULL) { |
558 | status = decode_cb_sequence4res(&xdr, cb); | 558 | status = decode_cb_sequence4res(xdr, cb); |
559 | if (unlikely(status)) | 559 | if (unlikely(status)) |
560 | goto out; | 560 | goto out; |
561 | } | 561 | } |
562 | 562 | ||
563 | status = decode_cb_op_status(&xdr, OP_CB_RECALL, &nfserr); | 563 | status = decode_cb_op_status(xdr, OP_CB_RECALL, &nfserr); |
564 | if (unlikely(status)) | 564 | if (unlikely(status)) |
565 | goto out; | 565 | goto out; |
566 | if (unlikely(nfserr != NFS4_OK)) | 566 | if (unlikely(nfserr != NFS4_OK)) |
@@ -578,7 +578,7 @@ out_default: | |||
578 | [NFSPROC4_CLNT_##proc] = { \ | 578 | [NFSPROC4_CLNT_##proc] = { \ |
579 | .p_proc = NFSPROC4_CB_##call, \ | 579 | .p_proc = NFSPROC4_CB_##call, \ |
580 | .p_encode = (kxdreproc_t)nfs4_xdr_enc_##argtype, \ | 580 | .p_encode = (kxdreproc_t)nfs4_xdr_enc_##argtype, \ |
581 | .p_decode = (kxdrproc_t)nfs4_xdr_dec_##restype, \ | 581 | .p_decode = (kxdrdproc_t)nfs4_xdr_dec_##restype, \ |
582 | .p_arglen = NFS4_enc_##argtype##_sz, \ | 582 | .p_arglen = NFS4_enc_##argtype##_sz, \ |
583 | .p_replen = NFS4_dec_##restype##_sz, \ | 583 | .p_replen = NFS4_dec_##restype##_sz, \ |
584 | .p_statidx = NFSPROC4_CB_##call, \ | 584 | .p_statidx = NFSPROC4_CB_##call, \ |