From 2217fd4003056bbac663df389c617da8e72ecbf0 Mon Sep 17 00:00:00 2001 From: Galen Shipman Date: Thu, 6 Jul 2006 15:13:26 +0000 Subject: [PATCH] reset receive request convertor for persistent requests We can always call unpack.. This commit was SVN r10677. --- ompi/mca/mtl/base/mtl_base_datatype.c | 4 ++-- ompi/mca/pml/cm/pml_cm_recvreq.h | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ompi/mca/mtl/base/mtl_base_datatype.c b/ompi/mca/mtl/base/mtl_base_datatype.c index 55f588900f..ed0cfdd56d 100644 --- a/ompi/mca/mtl/base/mtl_base_datatype.c +++ b/ompi/mca/mtl/base/mtl_base_datatype.c @@ -98,10 +98,10 @@ ompi_mtl_datatype_unpack(struct ompi_convertor_t *convertor, max_data = iov.iov_len; + ompi_convertor_unpack(convertor, &iov, &iov_count, + &max_data, &free_after); if (max_data > 0 && ompi_convertor_need_buffers(convertor)) { - ompi_convertor_unpack(convertor, &iov, &iov_count, - &max_data, &free_after); free(buffer); } diff --git a/ompi/mca/pml/cm/pml_cm_recvreq.h b/ompi/mca/pml/cm/pml_cm_recvreq.h index beeac64001..fdc3dca34e 100644 --- a/ompi/mca/pml/cm/pml_cm_recvreq.h +++ b/ompi/mca/pml/cm/pml_cm_recvreq.h @@ -137,6 +137,11 @@ do { \ MCA_PML_CM_RECV_REQUEST_RETURN( recvreq ); \ } else { \ /* initialize request status */ \ + if(recvreq->req_recv.req_base.req_ompi.req_persistent) { \ + /* rewind convertor */ \ + size_t offset = 0; \ + ompi_convertor_set_position(&recvreq->req_recv.req_convertor, &offset); \ + } \ recvreq->req_recv.req_base.req_pml_complete = true; \ MCA_PML_CM_RECV_REQUEST_MPI_COMPLETE( recvreq ); \ } \