diff options
author | J. Bruce Fields <bfields@redhat.com> | 2012-12-10 18:01:37 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-12-17 22:00:16 -0500 |
commit | afc59400d6c65bad66d4ad0b2daf879cbff8e23e (patch) | |
tree | cc4c1c4dcf01106259d4f18d637cb2d1115ef980 /net/sunrpc | |
parent | 79f77bf9a4e3dd5ead006b8f17e7c4ff07d8374e (diff) |
nfsd4: cleanup: replace rq_resused count by rq_next_page pointer
It may be a matter of personal taste, but I find this makes the code
clearer.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'net/sunrpc')
-rw-r--r-- | net/sunrpc/svc.c | 2 | ||||
-rw-r--r-- | net/sunrpc/svcsock.c | 2 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 10 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_sendto.c | 4 |
4 files changed, 11 insertions, 7 deletions
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index 529400d59755..c6abf1a6ba95 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c | |||
@@ -1297,7 +1297,7 @@ svc_process(struct svc_rqst *rqstp) | |||
1297 | * Setup response xdr_buf. | 1297 | * Setup response xdr_buf. |
1298 | * Initially it has just one page | 1298 | * Initially it has just one page |
1299 | */ | 1299 | */ |
1300 | rqstp->rq_resused = 1; | 1300 | rqstp->rq_next_page = &rqstp->rq_respages[1]; |
1301 | resv->iov_base = page_address(rqstp->rq_respages[0]); | 1301 | resv->iov_base = page_address(rqstp->rq_respages[0]); |
1302 | resv->iov_len = 0; | 1302 | resv->iov_len = 0; |
1303 | rqstp->rq_res.pages = rqstp->rq_respages + 1; | 1303 | rqstp->rq_res.pages = rqstp->rq_respages + 1; |
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index d8e5adfeac30..dcd5669c5154 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
@@ -601,6 +601,7 @@ static int svc_udp_recvfrom(struct svc_rqst *rqstp) | |||
601 | rqstp->rq_respages = rqstp->rq_pages + 1 + | 601 | rqstp->rq_respages = rqstp->rq_pages + 1 + |
602 | DIV_ROUND_UP(rqstp->rq_arg.page_len, PAGE_SIZE); | 602 | DIV_ROUND_UP(rqstp->rq_arg.page_len, PAGE_SIZE); |
603 | } | 603 | } |
604 | rqstp->rq_next_page = rqstp->rq_respages+1; | ||
604 | 605 | ||
605 | if (serv->sv_stats) | 606 | if (serv->sv_stats) |
606 | serv->sv_stats->netudpcnt++; | 607 | serv->sv_stats->netudpcnt++; |
@@ -1066,6 +1067,7 @@ static int svc_tcp_recvfrom(struct svc_rqst *rqstp) | |||
1066 | svsk->sk_datalen + want); | 1067 | svsk->sk_datalen + want); |
1067 | 1068 | ||
1068 | rqstp->rq_respages = &rqstp->rq_pages[pnum]; | 1069 | rqstp->rq_respages = &rqstp->rq_pages[pnum]; |
1070 | rqstp->rq_next_page = rqstp->rq_respages + 1; | ||
1069 | 1071 | ||
1070 | /* Now receive data */ | 1072 | /* Now receive data */ |
1071 | len = svc_partial_recvfrom(rqstp, vec, pnum, want, base); | 1073 | len = svc_partial_recvfrom(rqstp, vec, pnum, want, base); |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c index 41cb63b623df..0ce75524ed21 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | |||
@@ -521,11 +521,11 @@ next_sge: | |||
521 | rqstp->rq_pages[ch_no] = NULL; | 521 | rqstp->rq_pages[ch_no] = NULL; |
522 | 522 | ||
523 | /* | 523 | /* |
524 | * Detach res pages. svc_release must see a resused count of | 524 | * Detach res pages. If svc_release sees any it will attempt to |
525 | * zero or it will attempt to put them. | 525 | * put them. |
526 | */ | 526 | */ |
527 | while (rqstp->rq_resused) | 527 | while (rqstp->rq_next_page != rqstp->rq_respages) |
528 | rqstp->rq_respages[--rqstp->rq_resused] = NULL; | 528 | *(--rqstp->rq_next_page) = NULL; |
529 | 529 | ||
530 | return err; | 530 | return err; |
531 | } | 531 | } |
@@ -550,7 +550,7 @@ static int rdma_read_complete(struct svc_rqst *rqstp, | |||
550 | 550 | ||
551 | /* rq_respages starts after the last arg page */ | 551 | /* rq_respages starts after the last arg page */ |
552 | rqstp->rq_respages = &rqstp->rq_arg.pages[page_no]; | 552 | rqstp->rq_respages = &rqstp->rq_arg.pages[page_no]; |
553 | rqstp->rq_resused = 0; | 553 | rqstp->rq_next_page = &rqstp->rq_arg.pages[page_no]; |
554 | 554 | ||
555 | /* Rebuild rq_arg head and tail. */ | 555 | /* Rebuild rq_arg head and tail. */ |
556 | rqstp->rq_arg.head[0] = head->arg.head[0]; | 556 | rqstp->rq_arg.head[0] = head->arg.head[0]; |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c index 42eb7ba0b903..c1d124dc772b 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c | |||
@@ -548,6 +548,7 @@ static int send_reply(struct svcxprt_rdma *rdma, | |||
548 | int sge_no; | 548 | int sge_no; |
549 | int sge_bytes; | 549 | int sge_bytes; |
550 | int page_no; | 550 | int page_no; |
551 | int pages; | ||
551 | int ret; | 552 | int ret; |
552 | 553 | ||
553 | /* Post a recv buffer to handle another request. */ | 554 | /* Post a recv buffer to handle another request. */ |
@@ -611,7 +612,8 @@ static int send_reply(struct svcxprt_rdma *rdma, | |||
611 | * respages array. They are our pages until the I/O | 612 | * respages array. They are our pages until the I/O |
612 | * completes. | 613 | * completes. |
613 | */ | 614 | */ |
614 | for (page_no = 0; page_no < rqstp->rq_resused; page_no++) { | 615 | pages = rqstp->rq_next_page - rqstp->rq_respages; |
616 | for (page_no = 0; page_no < pages; page_no++) { | ||
615 | ctxt->pages[page_no+1] = rqstp->rq_respages[page_no]; | 617 | ctxt->pages[page_no+1] = rqstp->rq_respages[page_no]; |
616 | ctxt->count++; | 618 | ctxt->count++; |
617 | rqstp->rq_respages[page_no] = NULL; | 619 | rqstp->rq_respages[page_no] = NULL; |