Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
prov/rxm: Rework connection management
This patch greatly simplifies the management of msg endpoints by removing the cmap indirection. Unfortunately, there's no straightforward way to replace cmap and all of its complexities with set set of smaller, more manageable changes. The new scheme has the following behavior: The AV manages 2 sets of addresses. The first is an array of addresses which were inserted into the AV. This is the standard AV implementation. The second is an array of known peer addresses (peer array). That array includes addresses where were inserted into the AV, plus the addresses of peers to which there is an active connection. Along with these 2 arrays is an rbtree, which allows searching for addresses that are in the peer array. The peer array is implemented using the indexed buffer pool. RxM ep's will maintain an array of connections to each peer that it is communicating with. Those connections will be stored in an indexer. The index that each connection uses will match the index of the AV peer array corresponding to the remote address. So if address 10.1.2.3 is stored in the AV's peer array at index 8, then the rxm ep will store its connection to 10.1.2.3 in its indexer also at index 8. This structure makes lookups consistent for all rxm ep's and eliminiates the need for the complex cmap. In order to remove the cmap, the entire CM state machine needs to be rewritten. Signed-off-by: Sean Hefty <sean.hefty@intel.com>
- Loading branch information