If RDMA PUT is received before ACK and registration of memory fails don't
start sending fragment by copy in/out before ACK is received as we don't know pointer to receive request yet. Pipeline protocol sometimes doesn't send ACK though, so this case is still broken. This commit was SVN r18423.
Этот коммит содержится в:
родитель
0827e537fa
Коммит
31d2797a2f
@ -1093,7 +1093,10 @@ int mca_pml_ob1_send_request_put_frag( mca_pml_ob1_rdma_frag_t* frag )
|
||||
/* send fragment by copy in/out */
|
||||
mca_pml_ob1_send_request_copy_in_out(sendreq,
|
||||
frag->rdma_hdr.hdr_rdma.hdr_rdma_offset, frag->rdma_length);
|
||||
mca_pml_ob1_send_request_schedule(sendreq);
|
||||
/* if a pointer to a receive request is not set it means that
|
||||
* ACK was not yet received. Don't schedule sends before ACK */
|
||||
if(NULL != sendreq->req_recv.pval)
|
||||
mca_pml_ob1_send_request_schedule(sendreq);
|
||||
}
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
@ -147,6 +147,7 @@ get_request_from_send_pending(mca_pml_ob1_send_pending_t *type)
|
||||
comm, \
|
||||
sendmode, \
|
||||
persistent); \
|
||||
(sendreq)->req_recv.pval = NULL; \
|
||||
}
|
||||
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user