diff --git a/transport/rdma.c b/transport/rdma.c index 1c53f9ec4a15a187ab95b632343dcfcd135acf96..2c501c5652e0dba3ff0772b6512f0d3ec72f986c 100644 --- a/transport/rdma.c +++ b/transport/rdma.c @@ -183,6 +183,12 @@ mstro_transport_rdma_src_execute(mstro_cdo src, Mstro__Pool__TransferTicket* tic return MSTRO_FAIL; } + int err = pthread_mutex_lock(&g_mstro_transport_mreg_table_lock); + if (err) { + ERR("Couldn't lock mutex on mreg table\n"); + return MSTRO_FAIL; + } + status = mstro_transport_rdma__mreg_entry_find__locked(e->ep, cdo_id_p, ®entry); if (regentry) { @@ -297,6 +303,13 @@ mstro_transport_rdma_src_execute_bh(Mstro__Pool__TransferCompleted *tc) return MSTRO_FAIL; } + + int err = pthread_mutex_lock(&g_mstro_transport_mreg_table_lock); + if (err) { + ERR("Couldn't lock mutex on mreg table\n"); + return MSTRO_FAIL; + } + status = mstro_transport_rdma__mreg_entry_find__locked(e->ep, &cdoid, ®entry); if (!regentry) { @@ -313,8 +326,8 @@ mstro_transport_rdma_src_execute_bh(Mstro__Pool__TransferCompleted *tc) DEBUG ("Unregistering memory region (start: %p) used for RDMA\n", regentry->addr); - int err = fi_close((struct fid*)regentry->mr_reg); - if (err) { + err = fi_close((struct fid*)regentry->mr_reg); + if(err) { ERR("Couldn't unregister memory region for RDMA transport (err: %d)\n", err); status=MSTRO_FAIL; goto BAILOUT_UNLOCK;