<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE> Venus Data Structures: Comms</TITLE> <LINK HREF="venus-ds-6.html" REL=next> <LINK HREF="venus-ds-4.html" REL=previous> <LINK HREF="venus-ds.html#toc5" REL=contents> </HEAD> <BODY> <A HREF="venus-ds-6.html">Next</A> <A HREF="venus-ds-4.html">Previous</A> <A HREF="venus-ds.html#toc5">Contents</A> <HR> <H2><A NAME="s5">5. Comms</A></H2> <P> <P>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. <P>First there is an umbrella structure: <UL> <LI>VSGDB -- VSG database (persistent)</LI> <LI> contains vsgents</LI> </UL> <P>Entries are: <UL> <LI>vsgent -- VSG entry (persistent)</LI> <LI> maps VSG address to list of hosts</LI> </UL> <P>The transient structures holding connection information are stored in connent structures. These document single connections between clients and servers. <P> <UL> <LI>connent -- connection entry (transient)</LI> <LI> host</LI> <LI> uid</LI> <LI> RPC2 conn id</LI> <LI> flags (authenticated connection? inuse? etc.)</LI> </UL> <P>Servers are held in srvent's. <P> <UL> <LI>srvent -- server entry (transient)</LI> <LI> name</LI> <LI> host</LI> <LI> RPC2 conn id (for callback connection) tests for up/down rolled on this field</LI> <LI> bandwidth estimate</LI> <LI> flags (binding? need to probe?, etc.)</LI> </UL> <P>The data describing multirpc connections is held in mgrpent's: <P> <UL> <LI>mgrpent -- multirpc connection entry (transient)</LI> <LI> vsgaddr (should be link to vsgent?)</LI> <LI> uid</LI> <LI> hosts</LI> <LI> flags (authenticated? in use? etc.)</LI> <LI> RepOpCommCtxt <UL> <LI>RepOpCommCtxt -- replicated operation communication context (transient)</LI> <LI> number of servers</LI> <LI> list of conn ids</LI> <LI> list of hosts (actually participating in RPC)</LI> <LI> list of return codes</LI> <LI> primary host</LI> <LI> flags (per host)</LI> </UL> </LI> </UL> <P>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. <P> <HR> <A HREF="venus-ds-6.html">Next</A> <A HREF="venus-ds-4.html">Previous</A> <A HREF="venus-ds.html#toc5">Contents</A> </BODY> </HTML>