diff options
Diffstat (limited to 'rpc/rpc-transport/rdma/src/rdma.c')
-rw-r--r-- | rpc/rpc-transport/rdma/src/rdma.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/rpc/rpc-transport/rdma/src/rdma.c b/rpc/rpc-transport/rdma/src/rdma.c index 146bf87c45e..fe63d246adb 100644 --- a/rpc/rpc-transport/rdma/src/rdma.c +++ b/rpc/rpc-transport/rdma/src/rdma.c @@ -716,6 +716,10 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx, } priv->device = trav; trav->context = ibctx; + + trav->next = rdma_ctx->device; + rdma_ctx->device = trav; + iobuf_pool->device[iobuf_pool->rdma_device_count] = trav; iobuf_pool->mr_list[iobuf_pool->rdma_device_count++] = &trav->all_mr; trav->request_ctx_pool @@ -739,9 +743,6 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx, trav->device_name = gf_strdup (device_name); - trav->next = rdma_ctx->device; - rdma_ctx->device = trav; - trav->send_chan = ibv_create_comp_channel (trav->context); if (!trav->send_chan) { gf_msg (this->name, GF_LOG_ERROR, 0, @@ -858,6 +859,7 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx, out: if (trav != NULL) { + rdma_ctx->device = trav->next; gf_rdma_destroy_posts (this); mem_pool_destroy (trav->ioq_pool); mem_pool_destroy (trav->request_ctx_pool); |