I may be missing it, but it looks to me like the lock is taken right before the list manipulation. All he did was add a check for re-entry before taking the lock.
On Oct 22, 2013, at 8:39 AM, George Bosilca <bosi...@icl.utk.edu> wrote: > This patch is not correct, the list manipulation should remain protected > behind the mutex. > > George. > > On Oct 22, 2013, at 17:33 , svn-commit-mai...@open-mpi.org wrote: > >> Author: hjelmn (Nathan Hjelm) >> Date: 2013-10-22 11:33:39 EDT (Tue, 22 Oct 2013) >> New Revision: 29465 >> URL: https://svn.open-mpi.org/trac/ompi/changeset/29465 >> >> Log: >> Fix rentry check in communicator request progress. >> >> cmr=v1.7.4:ticket=3796 >> >> Text files modified: >> trunk/ompi/communicator/comm_request.c | 9 ++++++++- >> >> 1 files changed, 8 insertions(+), 1 deletions(-) >> >> Modified: trunk/ompi/communicator/comm_request.c >> ============================================================================== >> --- trunk/ompi/communicator/comm_request.c Tue Oct 22 11:33:32 2013 >> (r29464) >> +++ trunk/ompi/communicator/comm_request.c 2013-10-22 11:33:39 EDT (Tue, >> 22 Oct 2013) (r29465) >> @@ -11,6 +11,8 @@ >> >> #include "comm_request.h" >> >> +#include "opal/include/opal/sys/atomic.h" >> + >> opal_free_list_t ompi_comm_requests; >> opal_list_t ompi_comm_requests_active; >> opal_mutex_t ompi_comm_request_mutex; >> @@ -89,11 +91,15 @@ >> static int ompi_comm_request_progress (void) >> { >> ompi_comm_request_t *request, *next; >> + static int32_t progressing = 0; >> >> - if (opal_mutex_trylock (&ompi_comm_request_mutex)) { >> + /* don't allow re-entry */ >> + if (opal_atomic_swap_32 (&progressing, 1)) { >> return 0; >> } >> >> + opal_mutex_lock (&ompi_comm_request_mutex); >> + >> OPAL_LIST_FOREACH_SAFE(request, next, &ompi_comm_requests_active, >> ompi_comm_request_t) { >> int rc = OMPI_SUCCESS; >> >> @@ -140,6 +146,7 @@ >> } >> >> opal_mutex_unlock (&ompi_comm_request_mutex); >> + progressing = 0; >> >> return 1; >> } >> _______________________________________________ >> svn mailing list >> s...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/svn > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel