WHAT: Add a void* extra_state field to ompi_request_t
WHY: When we added the req_complete_cb field so that internal pieces of OMPI
who generated requests (such as the OSC components using the PML) could be
async notified when the request completed (ie, the PML request the OSC
component had initiated was finished), we neglected to add any type of
"extra state" associated with that request/callback. So the completion
callback is almost worthless, because the upper layer has a hard time
figuring out which thing it was working on it can now progress due to the
given (lower?) request completing.
WHERE: One line in each of ompi/request/request.[hc].
TIMEOUT: Sunday, Nov 29.
This is probably not even worth an RFC, which is why I'm not giving a very
long timeout (that, and if I don't get this done during the holiday weekend,
it will never get done). The changes are a single line in request.h adding
a void* extra_state variable to the ompi_request_t and another single line
in request.c to initialize the field to NULL.
While looking for some other code, I stumbled upon the OSC changes I made a
long time ago to try to use req_complete_cb instead of registering a
progress function. The code is actually a lot cleaner that way, and means
no progress functions for the one-side components.
The down side is that it adds another 8 bytes to ompi_request_t, which is
already larger than I'd like. But on the flip side, we have an 8 byte field
(the callback) which is totally unusable without the extra_state field.