]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/nfs/mount_clnt.c
SUNRPC: New xdr_streams XDR decoder API
[karo-tx-linux.git] / fs / nfs / mount_clnt.c
index 979ebd7af3cb2ea2d5347fe2759164e5efc4d60f..697e07235f308f66834e7bfd82b15d0f23fc8383 100644 (file)
@@ -340,18 +340,16 @@ static int decode_fhandle(struct xdr_stream *xdr, struct mountres *res)
        return 0;
 }
 
-static int mnt_dec_mountres(struct rpc_rqst *req, __be32 *p,
-                           struct mountres *res)
+static int mnt_xdr_dec_mountres(struct rpc_rqst *req,
+                               struct xdr_stream *xdr,
+                               struct mountres *res)
 {
-       struct xdr_stream xdr;
        int status;
 
-       xdr_init_decode(&xdr, &req->rq_rcv_buf, p);
-
-       status = decode_status(&xdr, res);
+       status = decode_status(xdr, res);
        if (unlikely(status != 0 || res->errno != 0))
                return status;
-       return decode_fhandle(&xdr, res);
+       return decode_fhandle(xdr, res);
 }
 
 static int decode_fhs_status(struct xdr_stream *xdr, struct mountres *res)
@@ -434,30 +432,28 @@ static int decode_auth_flavors(struct xdr_stream *xdr, struct mountres *res)
        return 0;
 }
 
-static int mnt_dec_mountres3(struct rpc_rqst *req, __be32 *p,
-                            struct mountres *res)
+static int mnt_xdr_dec_mountres3(struct rpc_rqst *req,
+                                struct xdr_stream *xdr,
+                                struct mountres *res)
 {
-       struct xdr_stream xdr;
        int status;
 
-       xdr_init_decode(&xdr, &req->rq_rcv_buf, p);
-
-       status = decode_fhs_status(&xdr, res);
+       status = decode_fhs_status(xdr, res);
        if (unlikely(status != 0 || res->errno != 0))
                return status;
-       status = decode_fhandle3(&xdr, res);
+       status = decode_fhandle3(xdr, res);
        if (unlikely(status != 0)) {
                res->errno = -EBADHANDLE;
                return 0;
        }
-       return decode_auth_flavors(&xdr, res);
+       return decode_auth_flavors(xdr, res);
 }
 
 static struct rpc_procinfo mnt_procedures[] = {
        [MOUNTPROC_MNT] = {
                .p_proc         = MOUNTPROC_MNT,
                .p_encode       = (kxdreproc_t)mnt_xdr_enc_dirpath,
-               .p_decode       = (kxdrproc_t)mnt_dec_mountres,
+               .p_decode       = (kxdrdproc_t)mnt_xdr_dec_mountres,
                .p_arglen       = MNT_enc_dirpath_sz,
                .p_replen       = MNT_dec_mountres_sz,
                .p_statidx      = MOUNTPROC_MNT,
@@ -476,7 +472,7 @@ static struct rpc_procinfo mnt3_procedures[] = {
        [MOUNTPROC3_MNT] = {
                .p_proc         = MOUNTPROC3_MNT,
                .p_encode       = (kxdreproc_t)mnt_xdr_enc_dirpath,
-               .p_decode       = (kxdrproc_t)mnt_dec_mountres3,
+               .p_decode       = (kxdrdproc_t)mnt_xdr_dec_mountres3,
                .p_arglen       = MNT_enc_dirpath_sz,
                .p_replen       = MNT_dec_mountres3_sz,
                .p_statidx      = MOUNTPROC3_MNT,