On 12/7/20 5:28 AM, Christoph Lameter wrote:
Looking at librdmacm/rdma_getaddrinfo(): It seems that the call to the IBACM via ucma_ib_resolve() is only done after a regular getaddrinfo() was run. Is IBACM truly able to provide address resolution or is it just some strange after processing if the main resolution attempt fails?
getaddrinfo() is called only if 'node' or 'service' are set. Otherwise, 'hints' are set and used.
ucma_set_ib_route() (called from rdma_resolve_route()) calls rdma_getaddrinfo() with 'hints' set.
Increasing the ibacm log level and then using cmtime(1), I see log messages that indicate that ibacm is resolving addresses.
AFACIT ucma_resolve() should run before getaddrinfo()? Or is there some magic in getaddrinfo() that actually does another call to the IBACM daemon? What is also confusing is that the path record determination is part of getaddrinfo() as well. So both the address and route lookup end up in getaddrinfo(). Is IB therefore using the kernel to do the lookups?