diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-20 22:30:54 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-20 22:30:54 -0400 |
| commit | d40ace0c7b4a329f7d869d0fbf27435543bb2acc (patch) | |
| tree | 6fa319ba10931ed815ec78895e3ec2160ac1ee34 /include/linux | |
| parent | e616c6303306df62223ebe2e68bb2f19c420dd81 (diff) | |
| parent | 68432a03f8ff93a9eecee95cc8f02e7fe2025cc9 (diff) | |
Merge branch 'for-2.6.26' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.26' of git://linux-nfs.org/~bfields/linux: (25 commits)
svcrdma: Verify read-list fits within RPCSVC_MAXPAGES
svcrdma: Change svc_rdma_send_error return type to void
svcrdma: Copy transport address and arm CQ before calling rdma_accept
svcrdma: Set rqstp transport address in rdma_read_complete function
svcrdma: Use ib verbs version of dma_unmap
svcrdma: Cleanup queued, but unprocessed I/O in svc_rdma_free
svcrdma: Move the QP and cm_id destruction to svc_rdma_free
svcrdma: Add reference for each SQ/RQ WR
svcrdma: Move destroy to kernel thread
svcrdma: Shrink scope of spinlock on RQ CQ
svcrdma: Use standard Linux lists for context cache
svcrdma: Simplify RDMA_READ deferral buffer management
svcrdma: Remove unused READ_DONE context flags bit
svcrdma: Return error from rdma_read_xdr so caller knows to free context
svcrdma: Fix error handling during listening endpoint creation
svcrdma: Free context on post_recv error in send_reply
svcrdma: Free context on ib_post_recv error
svcrdma: Add put of connection ESTABLISHED reference in rdma_cma_handler
svcrdma: Fix return value in svc_rdma_send
svcrdma: Fix race with dto_tasklet in svc_rdma_send
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/sunrpc/svc_rdma.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h index c11bbcc081f9..05eb4664d0dd 100644 --- a/include/linux/sunrpc/svc_rdma.h +++ b/include/linux/sunrpc/svc_rdma.h | |||
| @@ -71,7 +71,8 @@ extern atomic_t rdma_stat_sq_prod; | |||
| 71 | * completes. | 71 | * completes. |
| 72 | */ | 72 | */ |
| 73 | struct svc_rdma_op_ctxt { | 73 | struct svc_rdma_op_ctxt { |
| 74 | struct svc_rdma_op_ctxt *next; | 74 | struct svc_rdma_op_ctxt *read_hdr; |
| 75 | struct list_head free_list; | ||
| 75 | struct xdr_buf arg; | 76 | struct xdr_buf arg; |
| 76 | struct list_head dto_q; | 77 | struct list_head dto_q; |
| 77 | enum ib_wr_opcode wr_op; | 78 | enum ib_wr_opcode wr_op; |
| @@ -85,7 +86,6 @@ struct svc_rdma_op_ctxt { | |||
| 85 | struct page *pages[RPCSVC_MAXPAGES]; | 86 | struct page *pages[RPCSVC_MAXPAGES]; |
| 86 | }; | 87 | }; |
| 87 | 88 | ||
| 88 | #define RDMACTXT_F_READ_DONE 1 | ||
| 89 | #define RDMACTXT_F_LAST_CTXT 2 | 89 | #define RDMACTXT_F_LAST_CTXT 2 |
| 90 | 90 | ||
| 91 | struct svcxprt_rdma { | 91 | struct svcxprt_rdma { |
| @@ -104,7 +104,8 @@ struct svcxprt_rdma { | |||
| 104 | 104 | ||
| 105 | struct ib_pd *sc_pd; | 105 | struct ib_pd *sc_pd; |
| 106 | 106 | ||
| 107 | struct svc_rdma_op_ctxt *sc_ctxt_head; | 107 | atomic_t sc_ctxt_used; |
| 108 | struct list_head sc_ctxt_free; | ||
| 108 | int sc_ctxt_cnt; | 109 | int sc_ctxt_cnt; |
| 109 | int sc_ctxt_bump; | 110 | int sc_ctxt_bump; |
| 110 | int sc_ctxt_max; | 111 | int sc_ctxt_max; |
| @@ -123,6 +124,7 @@ struct svcxprt_rdma { | |||
| 123 | struct list_head sc_dto_q; /* DTO tasklet I/O pending Q */ | 124 | struct list_head sc_dto_q; /* DTO tasklet I/O pending Q */ |
| 124 | struct list_head sc_read_complete_q; | 125 | struct list_head sc_read_complete_q; |
| 125 | spinlock_t sc_read_complete_lock; | 126 | spinlock_t sc_read_complete_lock; |
| 127 | struct work_struct sc_work; | ||
| 126 | }; | 128 | }; |
| 127 | /* sc_flags */ | 129 | /* sc_flags */ |
| 128 | #define RDMAXPRT_RQ_PENDING 1 | 130 | #define RDMAXPRT_RQ_PENDING 1 |
| @@ -164,8 +166,8 @@ extern int svc_rdma_sendto(struct svc_rqst *); | |||
| 164 | 166 | ||
| 165 | /* svc_rdma_transport.c */ | 167 | /* svc_rdma_transport.c */ |
| 166 | extern int svc_rdma_send(struct svcxprt_rdma *, struct ib_send_wr *); | 168 | extern int svc_rdma_send(struct svcxprt_rdma *, struct ib_send_wr *); |
| 167 | extern int svc_rdma_send_error(struct svcxprt_rdma *, struct rpcrdma_msg *, | 169 | extern void svc_rdma_send_error(struct svcxprt_rdma *, struct rpcrdma_msg *, |
| 168 | enum rpcrdma_errcode); | 170 | enum rpcrdma_errcode); |
| 169 | struct page *svc_rdma_get_page(void); | 171 | struct page *svc_rdma_get_page(void); |
| 170 | extern int svc_rdma_post_recv(struct svcxprt_rdma *); | 172 | extern int svc_rdma_post_recv(struct svcxprt_rdma *); |
| 171 | extern int svc_rdma_create_listen(struct svc_serv *, int, struct sockaddr *); | 173 | extern int svc_rdma_create_listen(struct svc_serv *, int, struct sockaddr *); |
