@@ -408,6 +408,7 @@ static int mca_pml_ob1_recv_request_put_frag (mca_pml_ob1_rdma_frag_t *frag)
408408#if OPAL_ENABLE_HETEROGENEOUS_SUPPORT
409409 ompi_proc_t * proc = (ompi_proc_t * )recvreq -> req_recv .req_base .req_proc ;
410410#endif
411+ mca_btl_base_registration_handle_t * local_handle = NULL ;
411412 mca_bml_base_btl_t * bml_btl = frag -> rdma_bml ;
412413 mca_btl_base_descriptor_t * ctl ;
413414 mca_pml_ob1_rdma_hdr_t * hdr ;
@@ -416,6 +417,12 @@ static int mca_pml_ob1_recv_request_put_frag (mca_pml_ob1_rdma_frag_t *frag)
416417
417418 reg_size = bml_btl -> btl -> btl_registration_handle_size ;
418419
420+ if (frag -> local_handle ) {
421+ local_handle = frag -> local_handle ;
422+ } else if (recvreq -> local_handle ) {
423+ local_handle = recvreq -> local_handle ;
424+ }
425+
419426 /* prepare a descriptor for rdma control message */
420427 mca_bml_base_alloc (bml_btl , & ctl , MCA_BTL_NO_ORDER , sizeof (mca_pml_ob1_rdma_hdr_t ) + reg_size ,
421428 MCA_BTL_DES_FLAGS_PRIORITY | MCA_BTL_DES_FLAGS_BTL_OWNERSHIP |
@@ -429,7 +436,7 @@ static int mca_pml_ob1_recv_request_put_frag (mca_pml_ob1_rdma_frag_t *frag)
429436 hdr = (mca_pml_ob1_rdma_hdr_t * ) ctl -> des_segments -> seg_addr .pval ;
430437 mca_pml_ob1_rdma_hdr_prepare (hdr , (!recvreq -> req_ack_sent ) ? MCA_PML_OB1_HDR_TYPE_ACK : 0 ,
431438 recvreq -> remote_req_send .lval , frag , recvreq , frag -> rdma_offset ,
432- frag -> local_address , frag -> rdma_length , frag -> local_handle ,
439+ frag -> local_address , frag -> rdma_length , local_handle ,
433440 reg_size );
434441 ob1_hdr_hton (hdr , MCA_PML_OB1_HDR_TYPE_PUT , proc );
435442
0 commit comments