@@ -77,6 +77,7 @@ ompi_mtl_portals4_recv_block_progress(ptl_event_t *ev,
7777 break ;
7878
7979 case PTL_EVENT_AUTO_UNLINK :
80+ block -> me_h = PTL_INVALID_HANDLE ;
8081 OPAL_THREAD_LOCK (& ompi_mtl_portals4 .short_block_mutex );
8182 switch (block -> status ) {
8283 case BLOCK_STATUS_ACTIVATED : /* Normal case */
@@ -194,6 +195,7 @@ ompi_mtl_portals4_activate_block(ompi_mtl_portals4_recv_short_block_t *block)
194195 me .uid = ompi_mtl_portals4 .uid ;
195196 me .options =
196197 PTL_ME_OP_PUT |
198+ PTL_ME_EVENT_COMM_DISABLE |
197199 PTL_ME_MANAGE_LOCAL |
198200 PTL_ME_MAY_ALIGN ;
199201 if (ompi_mtl_portals4 .use_logical ) {
@@ -261,6 +263,7 @@ ompi_mtl_portals4_recv_short_fini(void)
261263 ompi_mtl_portals4_recv_short_block_t * block =
262264 (ompi_mtl_portals4_recv_short_block_t * ) item ;
263265 ret = ompi_mtl_portals4_recv_short_block_free (block );
266+ ompi_mtl_portals4 .active_recv_short_blocks -- ;
264267 }
265268 OPAL_THREAD_UNLOCK (& ompi_mtl_portals4 .short_block_mutex );
266269
@@ -278,10 +281,17 @@ ompi_mtl_portals4_recv_short_link(int count)
278281 if (active < count ) {
279282 for (i = 0 ; i < (count - active ) ; ++ i ) {
280283 ompi_mtl_portals4_recv_short_block_t * block =
281- ompi_mtl_portals4_recv_short_block_alloc (false );
284+ ompi_mtl_portals4_recv_short_block_alloc (true );
282285 if (NULL == block ) {
283286 return OMPI_ERR_OUT_OF_RESOURCE ;
284287 }
288+ OPAL_THREAD_LOCK (& ompi_mtl_portals4 .short_block_mutex );
289+ opal_list_append (& ompi_mtl_portals4 .recv_short_blocks ,
290+ & block -> base );
291+ OPAL_OUTPUT_VERBOSE ((10 , ompi_mtl_base_framework .framework_output ,
292+ "recv_short_link: total=%d active=%d" ,
293+ (int ) opal_list_get_size (& ompi_mtl_portals4 .recv_short_blocks ), ompi_mtl_portals4 .active_recv_short_blocks ));
294+ OPAL_THREAD_UNLOCK (& ompi_mtl_portals4 .short_block_mutex );
285295 ret = ompi_mtl_portals4_activate_block (block );
286296 }
287297 }
0 commit comments