New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FI_COMPLETION meaning is confusing #954
Comments
Let me think about this. We could introduce a new flag name with the same value (to conserve flag space) and update the documentation to reference the new flag name. I'm not sure of the new name. FI_SELECTIVE_COMPLETION? |
That would be a good start. Though I'm a little concerned that a nontrivial number of applications/tests will not be appropriately updated to use the new flag name as long as the old value will have the same behavior.
That works for me, it's better than my suggestions. |
@goodell @shefty Just to throw my two cents in, I agree with this proposal. It's a confusing part of the API maybe not so much from the user's perspective but definitely from the provider's perspective (I had to really think hard about it when I was adding this support to the verbs provider).
|
OTOH I also agree that it may be difficult to get all examples/tests updated in time for 1.0 unless we break API by changing the value of the new |
Part of the intent of using the same value is so we don't break the apps. We're just creating an alias, so that the usage becomes a little clearer. |
It might be worth the pain now to get this Right, however, and not be locked into backwards compatibility with 2 names with the same value (which is arguably less safe than 2 names with different values). |
Well, I'm not sure that a name change is 'right'. Dave found it confusing. I originally thought that having the same name made is easy to see the link between the two. If you bind with FI_COMPLETION, you must use FI_COMPLETION as an op flag... |
Yes, but having the same name meaning opposite things is confusing... (i.e., I agree with Dave :-) ) |
What @jsquyres said: whatever pain we go through now from API changes is a tenth of what we will experience from leaving a confusing API. |
We seem to agree with introducing a new flag name. The only concern is whether it should be defined as (1 << 24), which matches FI_COMPLETION, or (1 << 59) -- which ends up matching other flag values that are used in other operations. Regardless this change must go in before rc6. And I'd strongly prefer that all API changes be in before rc6, so we can have at least 1 rc that doesn't change the API. :) |
I still prefer them to have separate values, which will make catching user errors easier. Right now is our best opportunity to fix it as cleanly as possible.
Agreed. If we can agree on a solution, I can code up the PRs to change everything in libfabric and fabtests today. |
If no one else disagrees, I say go for it. fabtests doesn't use this flag anyway. Only the providers and any external apps would need to be updated. And external apps need updating for rc6 anyway. |
...instead of overloading the meaning of FI_COMPLETION. See issue ofiwg#954 for more background on this change. Signed-off-by: Dave Goodell <dgoodell@cisco.com>
...instead of overloading the meaning of FI_COMPLETION. See issue ofiwg#954 for more background on this change. Signed-off-by: Dave Goodell <dgoodell@cisco.com>
...instead of overloading the meaning of FI_COMPLETION. See issue ofiwg#954 for more background on this change. Signed-off-by: Dave Goodell <dgoodell@cisco.com>
We could still use a new test, per ofiwg/fabtests#245, but I'd say this specific issue is resolved now. Thanks everyone for the feedback. |
From fi_endpoint(3):
It's confusing to me that
FI_COMPLETION
is used as both a bind flag and an operation flag. This dual usage might not be so confusing other than it also has the opposite meaning in the two uses! If I specify it as a bind flag then it means "do not generate completions forsend
+sendv
". If I specify it as either a defaultop_flags
value or as a flag value tofi_sendmsg
then it means "do generate completions".It might be clearer to have two flags:
FI_COMPLETION
andFI_NO_COMPLETION
(orFI_SUPPRESS_COMPLETION
), where the former can only be passed as an operation flag and the latter can only be passed as a bind flag.@shefty are we too late to improve this aspect of the API?
The text was updated successfully, but these errors were encountered: