oob ud: put call to ibv_fork_init() before *all* ibv calls #554
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I noticed today that the call to
ibv_fork_support()is after the call toibv_get_device_list()in the oob ud component.Isn't this too late?
The call sequence of
ibv_get_device_list()effectively callspthread_once(..., ibverbs_init), which ends up callingibv_fork_init()if certain environment variables are set. This means that libibvebrs, itself, thinks thatibv_fork_init()should be invoked even before the bulk ofibv_get_device_list()is invoked.As such, this PR moves the call to
opal_common_verbs_fork_test()to up before the call toibv_get_device_list()(just curious -- why not useopal_ibv_get_device_list()?). This ensures that the call toibv_fork_init()is before all other ibv_* calls.Please review: @miked-mellanox @hjelmn