|
64 | 64 | #define RPCDBG_FACILITY RPCDBG_SVCXPRT
|
65 | 65 |
|
66 | 66 | static struct svcxprt_rdma *svc_rdma_create_xprt(struct svc_serv *serv,
|
67 |
| - struct net *net); |
| 67 | + struct net *net, int node); |
68 | 68 | static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
|
69 | 69 | struct net *net,
|
70 | 70 | struct sockaddr *sa, int salen,
|
@@ -123,14 +123,14 @@ static void qp_event_handler(struct ib_event *event, void *context)
|
123 | 123 | }
|
124 | 124 |
|
125 | 125 | static struct svcxprt_rdma *svc_rdma_create_xprt(struct svc_serv *serv,
|
126 |
| - struct net *net) |
| 126 | + struct net *net, int node) |
127 | 127 | {
|
128 |
| - struct svcxprt_rdma *cma_xprt = kzalloc(sizeof *cma_xprt, GFP_KERNEL); |
| 128 | + struct svcxprt_rdma *cma_xprt; |
129 | 129 |
|
130 |
| - if (!cma_xprt) { |
131 |
| - dprintk("svcrdma: failed to create new transport\n"); |
| 130 | + cma_xprt = kzalloc_node(sizeof(*cma_xprt), GFP_KERNEL, node); |
| 131 | + if (!cma_xprt) |
132 | 132 | return NULL;
|
133 |
| - } |
| 133 | + |
134 | 134 | svc_xprt_init(net, &svc_rdma_class, &cma_xprt->sc_xprt, serv);
|
135 | 135 | INIT_LIST_HEAD(&cma_xprt->sc_accept_q);
|
136 | 136 | INIT_LIST_HEAD(&cma_xprt->sc_rq_dto_q);
|
@@ -193,9 +193,9 @@ static void handle_connect_req(struct rdma_cm_id *new_cma_id,
|
193 | 193 | struct svcxprt_rdma *newxprt;
|
194 | 194 | struct sockaddr *sa;
|
195 | 195 |
|
196 |
| - /* Create a new transport */ |
197 | 196 | newxprt = svc_rdma_create_xprt(listen_xprt->sc_xprt.xpt_server,
|
198 |
| - listen_xprt->sc_xprt.xpt_net); |
| 197 | + listen_xprt->sc_xprt.xpt_net, |
| 198 | + ibdev_to_node(new_cma_id->device)); |
199 | 199 | if (!newxprt)
|
200 | 200 | return;
|
201 | 201 | newxprt->sc_cm_id = new_cma_id;
|
@@ -304,7 +304,7 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
|
304 | 304 |
|
305 | 305 | if (sa->sa_family != AF_INET && sa->sa_family != AF_INET6)
|
306 | 306 | return ERR_PTR(-EAFNOSUPPORT);
|
307 |
| - cma_xprt = svc_rdma_create_xprt(serv, net); |
| 307 | + cma_xprt = svc_rdma_create_xprt(serv, net, NUMA_NO_NODE); |
308 | 308 | if (!cma_xprt)
|
309 | 309 | return ERR_PTR(-ENOMEM);
|
310 | 310 | set_bit(XPT_LISTENER, &cma_xprt->sc_xprt.xpt_flags);
|
|
0 commit comments