From c56b4fc5115f635c05f5347f355e605eac0f8de1 Mon Sep 17 00:00:00 2001 From: Utz-Uwe Haus <uhaus@hpe.com> Date: Tue, 7 Sep 2021 06:49:48 +0000 Subject: [PATCH] Add missing mreg table locks in RDMA transport Closes #69 on JSC issue tracker --- transport/rdma.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/transport/rdma.c b/transport/rdma.c index 1c53f9ec..2c501c56 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; -- GitLab