I don't agree that these changes are required. In the current standard (2.2), MPI_ERR_PENDING is only allowed to be returned by MPI_WAITALL, in some very specific conditions. Here is the snippet from the MPI standard clarifying this behavior.
> When one or more of the communications completed by a call to MPI_WAITALL fail, it is desireable to return specific information on each communication. The function MPI_WAITALL will return in such case the error code MPI_ERR_IN_STATUS and will set the error field of each status to a specific error code. This code will be MPI_SUCCESS, if the specific communication completed; it will be another specific error code, if it failed; or it can be MPI_ERR_PENDING if it has neither failed nor completed.
As you can notice, the MPI_ERR_PENDING is only for the error in the status array and not for the error field in the status attached to the MPI request. Moreover, we don't use this inside Open MPI at all.
The usage we're doing in the default_wait_all of MPI_ERR_PENDING is incorrect as well. I will fix it, once we clarify the issue with your patch.
On Mar 21, 2012, at 13:46 , jjhursey_at_[hidden] wrote:
> Author: jjhursey
> Date: 2012-03-21 13:46:15 EDT (Wed, 21 Mar 2012)
> New Revision: 26172
> URL: https://svn.open-mpi.org/trac/ompi/changeset/26172
> Add support for MPI_ERR_PENDING - Per MPI 2.2 p 60
> Tested with:
> Text files modified:
> trunk/ompi/errhandler/errhandler_invoke.c | 9 ++
> trunk/ompi/request/req_test.c | 32 ++++++++++
> trunk/ompi/request/req_wait.c | 120 +++++++++++++++++++++++++++++++++++++--
> trunk/ompi/request/request.c | 2
> trunk/ompi/request/request.h | 5 +
> 5 files changed, 158 insertions(+), 10 deletions(-)