Skip to content

Commit dad472a

Browse files
committed
Use OMPI_COPY_STATUS to set status
Signed-off-by: Joseph Schuchart <[email protected]>
1 parent 837619e commit dad472a

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

ompi/mpiext/continue/c/continuation.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
#include "opal/class/opal_fifo.h"
1818
#include "opal/class/opal_free_list.h"
1919
#include "opal/sys/atomic.h"
20+
#include "opal/util/show_help.h"
2021
#include "ompi/mpiext/continue/c/continuation.h"
22+
#include "ompi/request/request.h"
2123

2224

2325
static opal_free_list_t ompi_continuation_freelist;
@@ -457,7 +459,7 @@ static int request_completion_cb(ompi_request_t *request)
457459

458460
/* set the status object */
459461
if (NULL != req_cont_data->cont_status) {
460-
*req_cont_data->cont_status = request->req_status;
462+
OMPI_COPY_STATUS(req_cont_data->cont_status, request->req_status, true);
461463
req_cont_data->cont_status = NULL;
462464
}
463465

@@ -507,16 +509,23 @@ int ompi_continue_attach(
507509
ompi_continuation_t *cont = ompi_continue_cont_create(count, cont_req, cont_cb,
508510
cont_data, statuses);
509511

512+
/* memory barrier to make sure a thread completing a request see
513+
* a correct continuation object */
510514
opal_atomic_wmb();
511515

512516
int32_t num_registered = 0;
513517
for (int i = 0; i < count; ++i) {
514518
ompi_request_t *request = requests[i];
515-
if (MPI_REQUEST_NULL != request) {
519+
if (MPI_REQUEST_NULL == request) {
520+
/* set the status for null-request */
521+
if (statuses != MPI_STATUSES_IGNORE) {
522+
OMPI_COPY_STATUS(&statuses[i], ompi_status_empty, true);
523+
}
524+
} else {
516525
if (&ompi_request_empty == request) {
517526
/* empty request: do not modify, just copy out the status */
518527
if (statuses != MPI_STATUSES_IGNORE) {
519-
statuses[i] = request->req_status;
528+
OMPI_COPY_STATUS(&statuses[i], request->req_status, true);
520529
}
521530
requests[i] = MPI_REQUEST_NULL;
522531
} else {

0 commit comments

Comments
 (0)