Merge pull request #5704 from hjelmn/v4.0.x_btl_vader
v4.0.x: btl/vader: ensure that the send tag is always written last
Этот коммит содержится в:
Коммит
82ce4eda77
@ -50,9 +50,10 @@ void mca_btl_vader_poll_handle_frag (mca_btl_vader_hdr_t *hdr, mca_btl_base_endp
|
||||
static inline void mca_btl_vader_fbox_set_header (mca_btl_vader_fbox_hdr_t *hdr, uint16_t tag,
|
||||
uint16_t seq, uint32_t size)
|
||||
{
|
||||
mca_btl_vader_fbox_hdr_t tmp = {.data = {.tag = tag, .seq = seq, .size = size}};
|
||||
opal_atomic_wmb ();
|
||||
mca_btl_vader_fbox_hdr_t tmp = {.data = {.tag = 0, .seq = seq, .size = size}};
|
||||
hdr->ival = tmp.ival;
|
||||
opal_atomic_wmb ();
|
||||
hdr->data.tag = tag;
|
||||
}
|
||||
|
||||
/* attempt to reserve a contiguous segment from the remote ep */
|
||||
@ -138,9 +139,6 @@ static inline bool mca_btl_vader_fbox_sendi (mca_btl_base_endpoint_t *ep, unsign
|
||||
memcpy (data + header_size, payload, payload_size);
|
||||
}
|
||||
|
||||
/* write out part of the header now. the tag will be written when the data is available */
|
||||
mca_btl_vader_fbox_set_header (MCA_BTL_VADER_FBOX_HDR(dst), tag, ep->fbox_out.seq++, data_size);
|
||||
|
||||
end += size;
|
||||
|
||||
if (OPAL_UNLIKELY(fbox_size == end)) {
|
||||
@ -152,6 +150,9 @@ static inline bool mca_btl_vader_fbox_sendi (mca_btl_base_endpoint_t *ep, unsign
|
||||
MCA_BTL_VADER_FBOX_HDR(ep->fbox_out.buffer + end)->ival = 0;
|
||||
}
|
||||
|
||||
/* write out part of the header now. the tag will be written when the data is available */
|
||||
mca_btl_vader_fbox_set_header (MCA_BTL_VADER_FBOX_HDR(dst), tag, ep->fbox_out.seq++, data_size);
|
||||
|
||||
/* align the buffer */
|
||||
ep->fbox_out.end = ((uint32_t) hbs << 31) | end;
|
||||
opal_atomic_wmb ();
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user