]> err.no Git - linux-2.6/blobdiff - include/linux/sunrpc/xprt.h
RPC: Ensure that we disconnect TCP socket when client requests error out
[linux-2.6] / include / linux / sunrpc / xprt.h
index 6ef99b14ff099ea0932606adbb59e368a84ecd5b..840e47a4ccc5b55a59c9d6f524fe044625911dc7 100644 (file)
@@ -53,6 +53,7 @@ struct rpc_timeout {
 
 struct rpc_task;
 struct rpc_xprt;
+struct seq_file;
 
 /*
  * This describes a complete RPC request
@@ -114,6 +115,7 @@ struct rpc_xprt_ops {
        void            (*release_request)(struct rpc_task *task);
        void            (*close)(struct rpc_xprt *xprt);
        void            (*destroy)(struct rpc_xprt *xprt);
+       void            (*print_stats)(struct rpc_xprt *xprt, struct seq_file *seq);
 };
 
 struct rpc_xprt {
@@ -187,6 +189,18 @@ struct rpc_xprt {
 
        struct list_head        recv;
 
+       struct {
+               unsigned long           bind_count,     /* total number of binds */
+                                       connect_count,  /* total number of connects */
+                                       connect_start,  /* connect start timestamp */
+                                       connect_time,   /* jiffies waiting for connect */
+                                       sends,          /* how many complete requests */
+                                       recvs,          /* how many complete requests */
+                                       bad_xids;       /* lookup_rqst didn't find XID */
+
+               unsigned long long      req_u,          /* average requests on the wire */
+                                       bklog_u;        /* backlog queue utilization */
+       } stat;
 
        void                    (*old_data_ready)(struct sock *, int);
        void                    (*old_state_change)(struct sock *);
@@ -215,7 +229,7 @@ int                 xprt_reserve_xprt(struct rpc_task *task);
 int                    xprt_reserve_xprt_cong(struct rpc_task *task);
 int                    xprt_prepare_transmit(struct rpc_task *task);
 void                   xprt_transmit(struct rpc_task *task);
-void                   xprt_abort_transmit(struct rpc_task *task);
+void                   xprt_end_transmit(struct rpc_task *task);
 int                    xprt_adjust_timeout(struct rpc_rqst *req);
 void                   xprt_release_xprt(struct rpc_xprt *xprt, struct rpc_task *task);
 void                   xprt_release_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task);