Commit 2397aa8b authored by Chuck Lever's avatar Chuck Lever Committed by J. Bruce Fields

svcrdma: Clean up read chunk counting

The byte_count argument is not used, and the function is called
only from one place.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Reviewed-by: default avatarSteve Wise <swise@opengridcomputing.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 83f2bedf
...@@ -178,8 +178,6 @@ struct svcxprt_rdma { ...@@ -178,8 +178,6 @@ struct svcxprt_rdma {
#define RPCRDMA_MAX_REQ_SIZE 4096 #define RPCRDMA_MAX_REQ_SIZE 4096
/* svc_rdma_marshal.c */ /* svc_rdma_marshal.c */
extern void svc_rdma_rcl_chunk_counts(struct rpcrdma_read_chunk *,
int *, int *);
extern int svc_rdma_xdr_decode_req(struct rpcrdma_msg **, struct svc_rqst *); extern int svc_rdma_xdr_decode_req(struct rpcrdma_msg **, struct svc_rqst *);
extern int svc_rdma_xdr_decode_deferred_req(struct svc_rqst *); extern int svc_rdma_xdr_decode_deferred_req(struct svc_rqst *);
extern int svc_rdma_xdr_encode_error(struct svcxprt_rdma *, extern int svc_rdma_xdr_encode_error(struct svcxprt_rdma *,
......
...@@ -70,22 +70,6 @@ static u32 *decode_read_list(u32 *va, u32 *vaend) ...@@ -70,22 +70,6 @@ static u32 *decode_read_list(u32 *va, u32 *vaend)
return (u32 *)&ch->rc_position; return (u32 *)&ch->rc_position;
} }
/*
* Determine number of chunks and total bytes in chunk list. The chunk
* list has already been verified to fit within the RPCRDMA header.
*/
void svc_rdma_rcl_chunk_counts(struct rpcrdma_read_chunk *ch,
int *ch_count, int *byte_count)
{
/* compute the number of bytes represented by read chunks */
*byte_count = 0;
*ch_count = 0;
for (; ch->rc_discrim != 0; ch++) {
*byte_count = *byte_count + ntohl(ch->rc_target.rs_length);
*ch_count = *ch_count + 1;
}
}
/* /*
* Decodes a write chunk list. The expected format is as follows: * Decodes a write chunk list. The expected format is as follows:
* descrim : xdr_one * descrim : xdr_one
......
...@@ -365,12 +365,22 @@ static int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt, ...@@ -365,12 +365,22 @@ static int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt,
return ret; return ret;
} }
static unsigned int
rdma_rcl_chunk_count(struct rpcrdma_read_chunk *ch)
{
unsigned int count;
for (count = 0; ch->rc_discrim != xdr_zero; ch++)
count++;
return count;
}
static int rdma_read_chunks(struct svcxprt_rdma *xprt, static int rdma_read_chunks(struct svcxprt_rdma *xprt,
struct rpcrdma_msg *rmsgp, struct rpcrdma_msg *rmsgp,
struct svc_rqst *rqstp, struct svc_rqst *rqstp,
struct svc_rdma_op_ctxt *head) struct svc_rdma_op_ctxt *head)
{ {
int page_no, ch_count, ret; int page_no, ret;
struct rpcrdma_read_chunk *ch; struct rpcrdma_read_chunk *ch;
u32 page_offset, byte_count; u32 page_offset, byte_count;
u64 rs_offset; u64 rs_offset;
...@@ -381,8 +391,7 @@ static int rdma_read_chunks(struct svcxprt_rdma *xprt, ...@@ -381,8 +391,7 @@ static int rdma_read_chunks(struct svcxprt_rdma *xprt,
if (!ch) if (!ch)
return 0; return 0;
svc_rdma_rcl_chunk_counts(ch, &ch_count, &byte_count); if (rdma_rcl_chunk_count(ch) > RPCSVC_MAXPAGES)
if (ch_count > RPCSVC_MAXPAGES)
return -EINVAL; return -EINVAL;
/* The request is completed when the RDMA_READs complete. The /* The request is completed when the RDMA_READs complete. The
......
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