Next
Previous
Contents
The file comm.h contains definitions for the datastructures for
communication. Key structures map the id's of replicated volumes to
servers, and volume storage groups to hosts. Currently this is
hacked into venusvol.cc; it would be better to make an rpc for this
information.
First there is an umbrella structure:
-
VSGDB -- VSG database (persistent)
-
contains vsgents
Entries are:
-
vsgent -- VSG entry (persistent)
-
maps VSG address to list of hosts
The transient structures holding connection information are
stored in connent structures. These document single connections
between clients and servers.
-
connent -- connection entry (transient)
-
host
-
uid
-
RPC2 conn id
-
flags (authenticated connection? inuse? etc.)
Servers are held in srvent's.
-
srvent -- server entry (transient)
-
name
-
host
-
RPC2 conn id (for callback connection) tests for up/down rolled
on this field
-
bandwidth estimate
-
flags (binding? need to probe?, etc.)
The data describing multirpc connections is held in
mgrpent's:
-
mgrpent -- multirpc connection entry (transient)
-
vsgaddr (should be link to vsgent?)
-
uid
-
hosts
-
flags (authenticated? in use? etc.)
-
RepOpCommCtxt
-
RepOpCommCtxt -- replicated operation communication context
(transient)
-
number of servers
-
list of conn ids
-
list of hosts (actually participating in RPC)
-
list of return codes
-
primary host
-
flags (per host)
The primary host should be used for load balancing. Currently
the algorithm is not satisfactory. The primary host is also (?)
held in the fso status block.
Next
Previous
Contents