aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Labiaga <Ricardo.Labiaga@netapp.com>2009-04-01 09:23:28 -0400
committerBenny Halevy <bhalevy@panasas.com>2009-06-17 17:11:40 -0400
commitdd2b63d049480979016b959abc2d141cdddb1389 (patch)
tree3b1f9a59b5c0a7c6027ec102a034a4236b41ebd6
parent281fe15dc1d6ad46992f18b7a6644269ec5f7138 (diff)
nfs41: Rename rq_received to rq_reply_bytes_recvd
The 'rq_received' member of 'struct rpc_rqst' is used to track when we have received a reply to our request. With v4.1, the backchannel can now accept callback requests over the existing connection. Rename this field to make it clear that it is only used for tracking reply bytes and not all bytes received on the connection. Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
-rw-r--r--include/linux/sunrpc/xprt.h3
-rw-r--r--net/sunrpc/backchannel_rqst.c2
-rw-r--r--net/sunrpc/clnt.c8
-rw-r--r--net/sunrpc/stats.c2
-rw-r--r--net/sunrpc/xprt.c15
5 files changed, 16 insertions, 14 deletions
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
index 55c6c37e249e..1175d58efc2e 100644
--- a/include/linux/sunrpc/xprt.h
+++ b/include/linux/sunrpc/xprt.h
@@ -67,7 +67,8 @@ struct rpc_rqst {
67 struct rpc_task * rq_task; /* RPC task data */ 67 struct rpc_task * rq_task; /* RPC task data */
68 __be32 rq_xid; /* request XID */ 68 __be32 rq_xid; /* request XID */
69 int rq_cong; /* has incremented xprt->cong */ 69 int rq_cong; /* has incremented xprt->cong */
70 int rq_received; /* receive completed */ 70 int rq_reply_bytes_recvd; /* number of reply */
71 /* bytes received */
71 u32 rq_seqno; /* gss seq no. used on req. */ 72 u32 rq_seqno; /* gss seq no. used on req. */
72 int rq_enc_pages_num; 73 int rq_enc_pages_num;
73 struct page **rq_enc_pages; /* scratch pages for use by 74 struct page **rq_enc_pages; /* scratch pages for use by
diff --git a/net/sunrpc/backchannel_rqst.c b/net/sunrpc/backchannel_rqst.c
index f56e18a23498..5a7d342e3087 100644
--- a/net/sunrpc/backchannel_rqst.c
+++ b/net/sunrpc/backchannel_rqst.c
@@ -230,7 +230,7 @@ struct rpc_rqst *xprt_alloc_bc_request(struct rpc_xprt *xprt)
230 230
231 if (req != NULL) { 231 if (req != NULL) {
232 set_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state); 232 set_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state);
233 req->rq_received = 0; 233 req->rq_reply_bytes_recvd = 0;
234 req->rq_bytes_sent = 0; 234 req->rq_bytes_sent = 0;
235 memcpy(&req->rq_private_buf, &req->rq_rcv_buf, 235 memcpy(&req->rq_private_buf, &req->rq_rcv_buf,
236 sizeof(req->rq_private_buf)); 236 sizeof(req->rq_private_buf));
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index f3e93b8eb90f..5bc2f45bddf0 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -1258,8 +1258,8 @@ call_status(struct rpc_task *task)
1258 struct rpc_rqst *req = task->tk_rqstp; 1258 struct rpc_rqst *req = task->tk_rqstp;
1259 int status; 1259 int status;
1260 1260
1261 if (req->rq_received > 0 && !req->rq_bytes_sent) 1261 if (req->rq_reply_bytes_recvd > 0 && !req->rq_bytes_sent)
1262 task->tk_status = req->rq_received; 1262 task->tk_status = req->rq_reply_bytes_recvd;
1263 1263
1264 dprint_status(task); 1264 dprint_status(task);
1265 1265
@@ -1376,7 +1376,7 @@ call_decode(struct rpc_task *task)
1376 1376
1377 /* 1377 /*
1378 * Ensure that we see all writes made by xprt_complete_rqst() 1378 * Ensure that we see all writes made by xprt_complete_rqst()
1379 * before it changed req->rq_received. 1379 * before it changed req->rq_reply_bytes_recvd.
1380 */ 1380 */
1381 smp_rmb(); 1381 smp_rmb();
1382 req->rq_rcv_buf.len = req->rq_private_buf.len; 1382 req->rq_rcv_buf.len = req->rq_private_buf.len;
@@ -1417,7 +1417,7 @@ out_retry:
1417 task->tk_status = 0; 1417 task->tk_status = 0;
1418 /* Note: rpc_verify_header() may have freed the RPC slot */ 1418 /* Note: rpc_verify_header() may have freed the RPC slot */
1419 if (task->tk_rqstp == req) { 1419 if (task->tk_rqstp == req) {
1420 req->rq_received = req->rq_rcv_buf.len = 0; 1420 req->rq_reply_bytes_recvd = req->rq_rcv_buf.len = 0;
1421 if (task->tk_client->cl_discrtry) 1421 if (task->tk_client->cl_discrtry)
1422 xprt_conditional_disconnect(task->tk_xprt, 1422 xprt_conditional_disconnect(task->tk_xprt,
1423 req->rq_connect_cookie); 1423 req->rq_connect_cookie);
diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c
index 8487aa0f1f5a..1b4e6791ecf3 100644
--- a/net/sunrpc/stats.c
+++ b/net/sunrpc/stats.c
@@ -156,7 +156,7 @@ void rpc_count_iostats(struct rpc_task *task)
156 op_metrics->om_timeouts += task->tk_timeouts; 156 op_metrics->om_timeouts += task->tk_timeouts;
157 157
158 op_metrics->om_bytes_sent += task->tk_bytes_sent; 158 op_metrics->om_bytes_sent += task->tk_bytes_sent;
159 op_metrics->om_bytes_recv += req->rq_received; 159 op_metrics->om_bytes_recv += req->rq_reply_bytes_recvd;
160 160
161 queue = (long)req->rq_xtime - task->tk_start; 161 queue = (long)req->rq_xtime - task->tk_start;
162 if (queue < 0) 162 if (queue < 0)
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index c144611223fc..f412a852bc73 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -806,9 +806,10 @@ void xprt_complete_rqst(struct rpc_task *task, int copied)
806 806
807 list_del_init(&req->rq_list); 807 list_del_init(&req->rq_list);
808 req->rq_private_buf.len = copied; 808 req->rq_private_buf.len = copied;
809 /* Ensure all writes are done before we update req->rq_received */ 809 /* Ensure all writes are done before we update */
810 /* req->rq_reply_bytes_recvd */
810 smp_wmb(); 811 smp_wmb();
811 req->rq_received = copied; 812 req->rq_reply_bytes_recvd = copied;
812 rpc_wake_up_queued_task(&xprt->pending, task); 813 rpc_wake_up_queued_task(&xprt->pending, task);
813} 814}
814EXPORT_SYMBOL_GPL(xprt_complete_rqst); 815EXPORT_SYMBOL_GPL(xprt_complete_rqst);
@@ -823,7 +824,7 @@ static void xprt_timer(struct rpc_task *task)
823 dprintk("RPC: %5u xprt_timer\n", task->tk_pid); 824 dprintk("RPC: %5u xprt_timer\n", task->tk_pid);
824 825
825 spin_lock_bh(&xprt->transport_lock); 826 spin_lock_bh(&xprt->transport_lock);
826 if (!req->rq_received) { 827 if (!req->rq_reply_bytes_recvd) {
827 if (xprt->ops->timer) 828 if (xprt->ops->timer)
828 xprt->ops->timer(task); 829 xprt->ops->timer(task);
829 } else 830 } else
@@ -845,8 +846,8 @@ int xprt_prepare_transmit(struct rpc_task *task)
845 dprintk("RPC: %5u xprt_prepare_transmit\n", task->tk_pid); 846 dprintk("RPC: %5u xprt_prepare_transmit\n", task->tk_pid);
846 847
847 spin_lock_bh(&xprt->transport_lock); 848 spin_lock_bh(&xprt->transport_lock);
848 if (req->rq_received && !req->rq_bytes_sent) { 849 if (req->rq_reply_bytes_recvd && !req->rq_bytes_sent) {
849 err = req->rq_received; 850 err = req->rq_reply_bytes_recvd;
850 goto out_unlock; 851 goto out_unlock;
851 } 852 }
852 if (!xprt->ops->reserve_xprt(task)) 853 if (!xprt->ops->reserve_xprt(task))
@@ -875,7 +876,7 @@ void xprt_transmit(struct rpc_task *task)
875 876
876 dprintk("RPC: %5u xprt_transmit(%u)\n", task->tk_pid, req->rq_slen); 877 dprintk("RPC: %5u xprt_transmit(%u)\n", task->tk_pid, req->rq_slen);
877 878
878 if (!req->rq_received) { 879 if (!req->rq_reply_bytes_recvd) {
879 if (list_empty(&req->rq_list) && rpc_reply_expected(task)) { 880 if (list_empty(&req->rq_list) && rpc_reply_expected(task)) {
880 /* 881 /*
881 * Add to the list only if we're expecting a reply 882 * Add to the list only if we're expecting a reply
@@ -914,7 +915,7 @@ void xprt_transmit(struct rpc_task *task)
914 /* Don't race with disconnect */ 915 /* Don't race with disconnect */
915 if (!xprt_connected(xprt)) 916 if (!xprt_connected(xprt))
916 task->tk_status = -ENOTCONN; 917 task->tk_status = -ENOTCONN;
917 else if (!req->rq_received && rpc_reply_expected(task)) { 918 else if (!req->rq_reply_bytes_recvd && rpc_reply_expected(task)) {
918 /* 919 /*
919 * Sleep on the pending queue since 920 * Sleep on the pending queue since
920 * we're expecting a reply. 921 * we're expecting a reply.