diff options
author | Chuck Lever <cel@netapp.com> | 2005-08-25 19:25:52 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2005-09-23 12:38:41 -0400 |
commit | 46c0ee8bc4ad3743de05e8b8b20201df44dcb6d3 (patch) | |
tree | 6b2993ff1cefb69cc3cc40c3605d088ea2af3c98 /include | |
parent | 49e9a89086b3cae784a4868ca852863e4f4ea3fe (diff) |
[PATCH] RPC: separate xprt_timer implementations
Allow transports to hook the retransmit timer interrupt. Some transports
calculate their congestion window here so that a retransmit timeout has
immediate effect on the congestion window.
Test-plan:
Use WAN simulation to cause sporadic bursty packet loss. Look for significant
regression in performance or client stability.
Signed-off-by: Chuck Lever <cel@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/sunrpc/xprt.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 86833b725bb5..443c3f984cf9 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
@@ -137,6 +137,7 @@ struct rpc_xprt_ops { | |||
137 | void (*connect)(struct rpc_task *task); | 137 | void (*connect)(struct rpc_task *task); |
138 | int (*send_request)(struct rpc_task *task); | 138 | int (*send_request)(struct rpc_task *task); |
139 | void (*set_retrans_timeout)(struct rpc_task *task); | 139 | void (*set_retrans_timeout)(struct rpc_task *task); |
140 | void (*timer)(struct rpc_task *task); | ||
140 | void (*close)(struct rpc_xprt *xprt); | 141 | void (*close)(struct rpc_xprt *xprt); |
141 | void (*destroy)(struct rpc_xprt *xprt); | 142 | void (*destroy)(struct rpc_xprt *xprt); |
142 | }; | 143 | }; |
@@ -257,6 +258,7 @@ void xprt_set_retrans_timeout_rtt(struct rpc_task *task); | |||
257 | void xprt_wake_pending_tasks(struct rpc_xprt *xprt, int status); | 258 | void xprt_wake_pending_tasks(struct rpc_xprt *xprt, int status); |
258 | void xprt_wait_for_buffer_space(struct rpc_task *task); | 259 | void xprt_wait_for_buffer_space(struct rpc_task *task); |
259 | void xprt_write_space(struct rpc_xprt *xprt); | 260 | void xprt_write_space(struct rpc_xprt *xprt); |
261 | void xprt_adjust_cwnd(struct rpc_task *task, int result); | ||
260 | struct rpc_rqst * xprt_lookup_rqst(struct rpc_xprt *xprt, u32 xid); | 262 | struct rpc_rqst * xprt_lookup_rqst(struct rpc_xprt *xprt, u32 xid); |
261 | void xprt_complete_rqst(struct rpc_xprt *xprt, struct rpc_rqst *req, int copied); | 263 | void xprt_complete_rqst(struct rpc_xprt *xprt, struct rpc_rqst *req, int copied); |
262 | void xprt_disconnect(struct rpc_xprt *xprt); | 264 | void xprt_disconnect(struct rpc_xprt *xprt); |