diff options
author | Chuck Lever <cel@netapp.com> | 2005-08-25 19:25:53 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2005-09-23 12:38:45 -0400 |
commit | a58dd398f5db4f73d5c581069fd70a4304cc4f0a (patch) | |
tree | 09e290d351c043392e7a2f8e0bc77aba90ff88ad /include | |
parent | 1570c1e41eabf6b7031f3e4322a2cf1cbe319fee (diff) |
[PATCH] RPC: add a release_rqst callout to the RPC transport switch
The final place where congestion control state is adjusted is in
xprt_release, where each request is finally released. Add a callout
there to allow transports to perform additional processing when a
request is about to be released.
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 2e48752d55d9..64e77658fa30 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
@@ -138,6 +138,7 @@ struct rpc_xprt_ops { | |||
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 (*timer)(struct rpc_task *task); |
141 | void (*release_request)(struct rpc_task *task); | ||
141 | void (*close)(struct rpc_xprt *xprt); | 142 | void (*close)(struct rpc_xprt *xprt); |
142 | void (*destroy)(struct rpc_xprt *xprt); | 143 | void (*destroy)(struct rpc_xprt *xprt); |
143 | }; | 144 | }; |
@@ -262,6 +263,7 @@ void xprt_update_rtt(struct rpc_task *task); | |||
262 | void xprt_adjust_cwnd(struct rpc_task *task, int result); | 263 | void xprt_adjust_cwnd(struct rpc_task *task, int result); |
263 | struct rpc_rqst * xprt_lookup_rqst(struct rpc_xprt *xprt, u32 xid); | 264 | struct rpc_rqst * xprt_lookup_rqst(struct rpc_xprt *xprt, u32 xid); |
264 | void xprt_complete_rqst(struct rpc_task *task, int copied); | 265 | void xprt_complete_rqst(struct rpc_task *task, int copied); |
266 | void xprt_release_rqst_cong(struct rpc_task *task); | ||
265 | void xprt_disconnect(struct rpc_xprt *xprt); | 267 | void xprt_disconnect(struct rpc_xprt *xprt); |
266 | 268 | ||
267 | /* | 269 | /* |