A host table describes the configuration of a virtual machine.
It lists
the name,
address
and
communication state
for each host.
Figure
shows how a host table is built from
struct htab and struct hostd structures.
Host tables are issued by the master pvmd
and kept synchronized across the virtual machine.
The delete operation is simple:
On receiving a
DM_HTDEL message from the master,
a pvmd calls
hostfailentry()
for each host listed in the message,
as though the deleted pvmds crashed.
Each pvmd can autonomously delete hosts
from its own table on finding them
unreachable (by timing out during communication).
The add operation is done
with a three-phase commit,
in order to guarantee global availability of new hosts
synchronously with completion of the add-host request.
This is described in
Section .
Each host descriptor has a refcount so it can be shared by multiple host tables. As the configuration of the machine changes, the host descriptors (except those added and deleted, of course) propagate from one host table to the next. This propagation is necessary because they hold various state information.
Host tables also serve other uses: They allow the pvmd to manipulate host sets, for example, when picking candidate hosts on which to spawn a task. Also, the advisory host file supplied to the master pvmd is parsed and stored in a host table.