mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-09-05 04:27:55 +00:00
1e5de1e476
A node that discovery finds over ethernet is known by its ethernet mac. When that node boots over IPoIB, the request carries the InfiniBand identity of the adapter and not the ethernet mac. dhcpd finds no host entry for that identity and answers nothing, thus the node does not boot and the log gives no reason. dhcp.pm already gives hardware type 32 to a node whose mac attribute holds an 8 or 9 byte fabric address, but that needs the fabric address before the node boots, and discovery records the ethernet mac. A Mellanox adapter makes its port GUID from the ethernet mac, by the insertion of 03:00 in the middle. Thus the InfiniBand identity of the node is already known. Write it as a second host entry with the -xcat-ib suffix and hardware type 32, so a request over either fabric finds the node and receives the same address. Remove that entry with the node. Write the second entry only for a node whose network an IPoIB interface serves. A cluster with no InfiniBand keeps the host entries that it has today. This is for the ISC backend. makedhcp returns into the Kea code before this routine when Kea is the backend, and a Kea server does not answer an IPoIB client, thus there is nothing there for a second entry to answer. Recovered from the lenovobuild branch. Reimplemented against master: the original writes the second entry for every ethernet node, which makes two host entries for each node of a cluster that has no InfiniBand.