osc/rdma: fix hang when accumulating with MPI_REPLACE
The replace callback did not increment the incoming frag counter. This leads to a hang during synchronization. This commit adds the increment and also puts the request on the garbage collection list to fix a leak. This fixes a hang found when running the mpich test suite. cmr=v1.8.2:reviewer=bbenton This commit was SVN r32016.
Этот коммит содержится в:
родитель
7f6de57653
Коммит
927098d567
@ -763,6 +763,16 @@ static int ompi_osc_rdma_acc_op_queue (ompi_osc_rdma_module_t *module, ompi_osc_
|
||||
static int replace_cb (ompi_request_t *request)
|
||||
{
|
||||
ompi_osc_rdma_module_t *module = (ompi_osc_rdma_module_t *) request->req_complete_cb_data;
|
||||
int rank = MPI_PROC_NULL;
|
||||
|
||||
if (request->req_status.MPI_TAG & 0x01) {
|
||||
rank = request->req_status.MPI_SOURCE;
|
||||
}
|
||||
|
||||
mark_incoming_completion (module, rank);
|
||||
|
||||
/* put this request on the garbage colletion list */
|
||||
osc_rdma_gc_add_request (request);
|
||||
|
||||
/* unlock the accumulate lock */
|
||||
ompi_osc_rdma_accumulate_unlock (module);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user