1
1

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
Этот коммит содержится в:
Howard Pritchard 2018-09-17 13:26:24 -06:00 коммит произвёл GitHub
родитель 3bf2220b3e 83668f4b47
Коммит 82ce4eda77
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23

Просмотреть файл

@ -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 ();