1
1

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.
Этот коммит содержится в:
Gleb Natapov 2008-05-11 12:40:55 +00:00
родитель 0827e537fa
Коммит 31d2797a2f
2 изменённых файлов: 5 добавлений и 1 удалений

Просмотреть файл

@ -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; \
}