diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2016-06-29 13:53:19 -0400 |
---|---|---|
committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2016-07-11 15:50:43 -0400 |
commit | a473018cfe0ef1e46c0ff9df3fa02afc23c9f1d2 (patch) | |
tree | af90fecedbcaf73d57e77545bf380e99c000d1fd | |
parent | 2dc3a69de0d6e7f4dba7dbf8eadd5c3ac34098c7 (diff) |
xprtrdma: Remove rpcrdma_map_one() and friends
Clean up: ALLPHYSICAL is gone and FMR has been converted to use
scatterlists. There are no more users of these functions.
This patch shrinks the size of struct rpcrdma_req by about 3500
bytes on x86_64. There is one of these structs for each RPC credit
(128 credits per transport connection).
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
-rw-r--r-- | net/sunrpc/xprtrdma/verbs.c | 8 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/xprt_rdma.h | 36 |
2 files changed, 0 insertions, 44 deletions
diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c index 5ee98e9d0fe9..b80e767fe687 100644 --- a/net/sunrpc/xprtrdma/verbs.c +++ b/net/sunrpc/xprtrdma/verbs.c | |||
@@ -1086,14 +1086,6 @@ rpcrdma_recv_buffer_put(struct rpcrdma_rep *rep) | |||
1086 | * Wrappers for internal-use kmalloc memory registration, used by buffer code. | 1086 | * Wrappers for internal-use kmalloc memory registration, used by buffer code. |
1087 | */ | 1087 | */ |
1088 | 1088 | ||
1089 | void | ||
1090 | rpcrdma_mapping_error(struct rpcrdma_mr_seg *seg) | ||
1091 | { | ||
1092 | dprintk("RPC: map_one: offset %p iova %llx len %zu\n", | ||
1093 | seg->mr_offset, | ||
1094 | (unsigned long long)seg->mr_dma, seg->mr_dmalen); | ||
1095 | } | ||
1096 | |||
1097 | /** | 1089 | /** |
1098 | * rpcrdma_alloc_regbuf - kmalloc and register memory for SEND/RECV buffers | 1090 | * rpcrdma_alloc_regbuf - kmalloc and register memory for SEND/RECV buffers |
1099 | * @ia: controlling rpcrdma_ia | 1091 | * @ia: controlling rpcrdma_ia |
diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h index bcb168e3fe15..f1b6f2fb5355 100644 --- a/net/sunrpc/xprtrdma/xprt_rdma.h +++ b/net/sunrpc/xprtrdma/xprt_rdma.h | |||
@@ -277,9 +277,6 @@ struct rpcrdma_mr_seg { /* chunk descriptors */ | |||
277 | u32 mr_rkey; /* registration result */ | 277 | u32 mr_rkey; /* registration result */ |
278 | u32 mr_len; /* length of chunk or segment */ | 278 | u32 mr_len; /* length of chunk or segment */ |
279 | int mr_nsegs; /* number of segments in chunk or 0 */ | 279 | int mr_nsegs; /* number of segments in chunk or 0 */ |
280 | enum dma_data_direction mr_dir; /* segment mapping direction */ | ||
281 | dma_addr_t mr_dma; /* segment mapping address */ | ||
282 | size_t mr_dmalen; /* segment mapping length */ | ||
283 | struct page *mr_page; /* owning page, if any */ | 280 | struct page *mr_page; /* owning page, if any */ |
284 | char *mr_offset; /* kva if no page, else offset */ | 281 | char *mr_offset; /* kva if no page, else offset */ |
285 | }; | 282 | }; |
@@ -496,45 +493,12 @@ void rpcrdma_destroy_wq(void); | |||
496 | * Wrappers for chunk registration, shared by read/write chunk code. | 493 | * Wrappers for chunk registration, shared by read/write chunk code. |
497 | */ | 494 | */ |
498 | 495 | ||
499 | void rpcrdma_mapping_error(struct rpcrdma_mr_seg *); | ||
500 | |||
501 | static inline enum dma_data_direction | 496 | static inline enum dma_data_direction |
502 | rpcrdma_data_dir(bool writing) | 497 | rpcrdma_data_dir(bool writing) |
503 | { | 498 | { |
504 | return writing ? DMA_FROM_DEVICE : DMA_TO_DEVICE; | 499 | return writing ? DMA_FROM_DEVICE : DMA_TO_DEVICE; |
505 | } | 500 | } |
506 | 501 | ||
507 | static inline void | ||
508 | rpcrdma_map_one(struct ib_device *device, struct rpcrdma_mr_seg *seg, | ||
509 | enum dma_data_direction direction) | ||
510 | { | ||
511 | seg->mr_dir = direction; | ||
512 | seg->mr_dmalen = seg->mr_len; | ||
513 | |||
514 | if (seg->mr_page) | ||
515 | seg->mr_dma = ib_dma_map_page(device, | ||
516 | seg->mr_page, offset_in_page(seg->mr_offset), | ||
517 | seg->mr_dmalen, seg->mr_dir); | ||
518 | else | ||
519 | seg->mr_dma = ib_dma_map_single(device, | ||
520 | seg->mr_offset, | ||
521 | seg->mr_dmalen, seg->mr_dir); | ||
522 | |||
523 | if (ib_dma_mapping_error(device, seg->mr_dma)) | ||
524 | rpcrdma_mapping_error(seg); | ||
525 | } | ||
526 | |||
527 | static inline void | ||
528 | rpcrdma_unmap_one(struct ib_device *device, struct rpcrdma_mr_seg *seg) | ||
529 | { | ||
530 | if (seg->mr_page) | ||
531 | ib_dma_unmap_page(device, | ||
532 | seg->mr_dma, seg->mr_dmalen, seg->mr_dir); | ||
533 | else | ||
534 | ib_dma_unmap_single(device, | ||
535 | seg->mr_dma, seg->mr_dmalen, seg->mr_dir); | ||
536 | } | ||
537 | |||
538 | /* | 502 | /* |
539 | * RPC/RDMA connection management calls - xprtrdma/rpc_rdma.c | 503 | * RPC/RDMA connection management calls - xprtrdma/rpc_rdma.c |
540 | */ | 504 | */ |