ZC OFI API: Replace fi_write with fi_writemsg with FI_DELIVERY_COMPLETE 97/4597/5
authorNitin Bhat <nbhat4@illinois.edu>
Fri, 21 Sep 2018 18:37:55 +0000 (14:37 -0400)
committerNitin Bhat <nbhat4@illinois.edu>
Tue, 25 Sep 2018 14:38:57 +0000 (09:38 -0500)
commit8663c8e011c65871dd1af79d158bf6584e5c2122
tree5a218d5bf0771b85066743f31dd7df3255f749e2
parentd6d0678cd7dcf72ecc2b6189e733236c7cd135e1
ZC OFI API: Replace fi_write with fi_writemsg with FI_DELIVERY_COMPLETE

Previously, fi_write would complete only when the source could
reuse its buffer. With this change, an fi_writemsg completes only when
the destination buffer has received the data. This change is required
to solve a rare race condition which occurs in the UNREG mode of operation,
where a Put operation is performed instead of a Get operation. The race
condition causes the source to send a message to the destination to
potentially de-register the destination buffer when the completion of the
write operation on the destination is uncertain i.e. the data could still
be in-flight. This patch fixes that case as completion on the source only
occurs after the destination has received the data through the RDMA write
operation.

Change-Id: I808f1d5bc9dda3d92859e9775531d0b5c47a1c8e
src/arch/ofi/machine-onesided.c