patch-2.3.99-pre3 linux/include/linux/sunrpc/xprt.h
Next file: linux/include/linux/udf_fs.h
Previous file: linux/include/linux/sunrpc/sched.h
Back to the patch index
Back to the overall index
- Lines: 111
- Date:
Thu Mar 23 15:37:04 2000
- Orig file:
v2.3.99-pre2/linux/include/linux/sunrpc/xprt.h
- Orig date:
Fri Oct 15 15:25:14 1999
diff -u --recursive --new-file v2.3.99-pre2/linux/include/linux/sunrpc/xprt.h linux/include/linux/sunrpc/xprt.h
@@ -47,7 +47,7 @@
((xprt)->cong >= (xprt)->cwnd)
/* Default timeout values */
-#define RPC_MAX_UDP_TIMEOUT (6*HZ)
+#define RPC_MAX_UDP_TIMEOUT (60*HZ)
#define RPC_MAX_TCP_TIMEOUT (600*HZ)
/* RPC call and reply header size as number of 32bit words (verifier
@@ -96,8 +96,7 @@
struct rpc_task * rq_task; /* RPC task data */
__u32 rq_xid; /* request XID */
struct rpc_rqst * rq_next; /* free list */
- unsigned char rq_gotit; /* reply received */
- unsigned char rq_damaged; /* being received */
+ unsigned char rq_damaged; /* reply being received */
/*
* For authentication (e.g. auth_des)
@@ -122,12 +121,6 @@
#define rq_rlen rq_rcv_buf.io_len
struct rpc_xprt {
- struct rpc_xprt * link; /* list of all clients */
- struct rpc_xprt * rx_pending; /* receive pending list */
-
- int rx_pending_flag;/* are we on the rcv pending list ? */
-
- struct file * file; /* VFS layer */
struct socket * sock; /* BSD socket layer */
struct sock * inet; /* INET layer */
@@ -145,9 +138,9 @@
struct rpc_wait_queue reconn; /* waiting for reconnect */
struct rpc_rqst * free; /* free slots */
struct rpc_rqst slot[RPC_MAXREQS];
- unsigned char connected; /* TCP: connected */
- unsigned char write_space; /* TCP: can send */
- unsigned int shutdown : 1, /* being shut down */
+ unsigned int connected : 1, /* TCP: connected */
+ write_space: 1, /* TCP: can send */
+ shutdown : 1, /* being shut down */
nocong : 1, /* no congestion control */
stream : 1, /* TCP */
tcp_more : 1, /* more record fragments */
@@ -156,16 +149,12 @@
/*
* State of TCP reply receive stuff
*/
- union { /* record marker & XID */
- u32 header[2];
- u8 data[8];
- } tcp_recm;
- struct rpc_rqst * tcp_rqstp;
- struct iovec tcp_iovec[MAX_IOVEC];
- u32 tcp_total; /* overall record length */
- u32 tcp_reclen; /* fragment length */
- u32 tcp_offset; /* fragment offset */
- u32 tcp_copied; /* copied to request */
+ u32 tcp_recm; /* Fragment header */
+ u32 tcp_xid; /* Current XID */
+ unsigned int tcp_reclen, /* fragment length */
+ tcp_offset, /* fragment offset */
+ tcp_copied; /* copied to request */
+ struct list_head rx_pending; /* receive pending list */
/*
* Send stuff
@@ -179,17 +168,13 @@
wait_queue_head_t cong_wait;
};
-#define tcp_reclen tcp_recm.header[0]
-#define tcp_xid tcp_recm.header[1]
#ifdef __KERNEL__
-struct rpc_xprt * xprt_create(struct file *socket,
- struct sockaddr_in *addr,
- struct rpc_timeout *toparms);
struct rpc_xprt * xprt_create_proto(int proto, struct sockaddr_in *addr,
struct rpc_timeout *toparms);
int xprt_destroy(struct rpc_xprt *);
+void xprt_shutdown(struct rpc_xprt *);
void xprt_default_timeout(struct rpc_timeout *, int);
void xprt_set_timeout(struct rpc_timeout *, unsigned int,
unsigned long);
@@ -201,8 +186,22 @@
void xprt_release(struct rpc_task *);
void xprt_reconnect(struct rpc_task *);
int xprt_clear_backlog(struct rpc_xprt *);
+void __rpciod_tcp_dispatcher(void);
+
+extern struct list_head rpc_xprt_pending;
-int xprt_tcp_pending(void);
+static inline
+int xprt_tcp_pending(void)
+{
+ return !list_empty(&rpc_xprt_pending);
+}
+
+static inline
+void rpciod_tcp_dispatcher(void)
+{
+ if (xprt_tcp_pending())
+ __rpciod_tcp_dispatcher();
+}
#endif /* __KERNEL__*/
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)