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)
|
static int replace_cb (ompi_request_t *request)
|
||||||
{
|
{
|
||||||
ompi_osc_rdma_module_t *module = (ompi_osc_rdma_module_t *) request->req_complete_cb_data;
|
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 */
|
/* unlock the accumulate lock */
|
||||||
ompi_osc_rdma_accumulate_unlock (module);
|
ompi_osc_rdma_accumulate_unlock (module);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user