From ad8c128f987168ba5ec7efac9a4a2fed7b7df745 Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Wed, 30 Nov 2016 17:29:21 +0900 Subject: [PATCH] coll/libnbc: add some comments on how locks are used no code change Signed-off-by: Gilles Gouaillardet (cherry picked from commit open-mpi/ompi@15098161a331168c66b29a696522fe52c8b2d8f5) --- ompi/mca/coll/libnbc/coll_libnbc.h | 4 ++-- ompi/mca/coll/libnbc/coll_libnbc_component.c | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ompi/mca/coll/libnbc/coll_libnbc.h b/ompi/mca/coll/libnbc/coll_libnbc.h index b66ce60fa5e..c8034c53165 100644 --- a/ompi/mca/coll/libnbc/coll_libnbc.h +++ b/ompi/mca/coll/libnbc/coll_libnbc.h @@ -75,8 +75,8 @@ struct ompi_coll_libnbc_component_t { opal_free_list_t requests; opal_list_t active_requests; int32_t active_comms; - opal_atomic_lock_t progress_lock; - opal_mutex_t lock; + opal_atomic_lock_t progress_lock; /* protect from recursive calls */ + opal_mutex_t lock; /* protect access to the active_requests list */ }; typedef struct ompi_coll_libnbc_component_t ompi_coll_libnbc_component_t; diff --git a/ompi/mca/coll/libnbc/coll_libnbc_component.c b/ompi/mca/coll/libnbc/coll_libnbc_component.c index fe8bdcc902a..57454d1a003 100644 --- a/ompi/mca/coll/libnbc/coll_libnbc_component.c +++ b/ompi/mca/coll/libnbc/coll_libnbc_component.c @@ -263,8 +263,11 @@ ompi_coll_libnbc_progress(void) ompi_coll_libnbc_request_t* request, *next; int res; + /* return if invoked recursively */ if (opal_atomic_trylock(&mca_coll_libnbc_component.progress_lock)) return 0; + /* process active requests, and use mca_coll_libnbc_component.lock to access the + * mca_coll_libnbc_component.active_requests list */ OPAL_THREAD_LOCK(&mca_coll_libnbc_component.lock); OPAL_LIST_FOREACH_SAFE(request, next, &mca_coll_libnbc_component.active_requests, ompi_coll_libnbc_request_t) {