Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 211238da6d926d1ca4390483bb29f586 > files > 97

coda-doc-5.2.0-4mdk.noarch.rpm

<!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: Volumes</TITLE>
 <LINK HREF="venus-ds-5.html" REL=next>
 <LINK HREF="venus-ds-3.html" REL=previous>
 <LINK HREF="venus-ds.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="venus-ds-5.html">Next</A>
<A HREF="venus-ds-3.html">Previous</A>
<A HREF="venus-ds.html#toc4">Contents</A>
<HR>
<H2><A NAME="s4">4. Volumes</A></H2>

<P>Volumes are recorded using an umbrella data structure called the volume database (VDB), defined in venusvol.h.
<P>
<UL>
<LI> volume database.  (persistent)</LI>
<LI>    contains volents (linked), </LI>
<LI> contains mle</LI>
<LI>    resource limits on MLEs</LI>
</UL>
<P>Contained in the volume database are above all entries for individual volumes: volents. Volents are stored in persistent storage. Volents are described in venusvol.h as well and contain the following important fields:
<UL>
<LI>    volume ID (of course)</LI>
<LI>    state (hoarding, emulating, logging (write disconnected),etc.) </LI>
<LI>    flags (state transition pending, reintegrating, repairing, weakly connected, etc.)
counts (readers, writers, etc. for synchronization)</LI>
<LI>    range pre-allocated fids        </LI>
<LI>    version vector, callback status</LI>
<LI>    list of read/write volume ids (if replicated)</LI>
<LI>            replicated volume id (if read-write)</LI>
<LI>    CML</LI>
<LI>    link to VSG entry (vsgent)</LI>
<LI>    list of FSOs</LI>
<LI>    list of COP2 pending (cop2ent)</LI>
<LI>    list of entries requiring resolution (resent)</LI>
<LI>    statistics (vmon, etc.)</LI>
</UL>

XXX What are observers? What are pre-allocated fids?
<P>A volume carries a client modification log.  The umbrella data
structure is the ClientModifyLog, which contains entries of type
cmlent. These are all persistent. A structure of type ClientModifyLog
has an owner, who is responsible for writing all the entries of the
log.  XXX What is an mle versus a cmle
<P>
<UL>
<LI>    list of cmlents</LI>
<LI>    ownership (only one user may own)</LI>
<LI>    statistics</LI>
</UL>
<P>An entry in the CML is a higly technical structure reflecting the filesystem updates. It contains opcodes and a union (u) of data containing the fid and update details. All cmlents are held in RVM.
<P>
<UL>
<LI>    opcode, operands</LI>
<LI>    flags (frozen, local repair, etc.)</LI>
<LI>    links to 
<UL>
<LI>    CML</LI>
<LI>    fsobjs</LI>
<LI>    predecessor, successor</LI>
</UL>
</LI>
</UL>
<P>A very small structure holds the data associated to a cop2 event. This data is transient.
cop2ent -- entry for pending COP2 events        (transient)
<UL>
<LI>    link to volume</LI>
<LI>    store ID</LI>
<LI>    update set</LI>
</UL>
<P>Another small structure holds data associated with fids needing resolution. 
<P>
<UL>
<LI>resent -- entry for fids needing resolution (transient)</LI>
<LI>    fid, result</LI>
</UL>
<P>
<HR>
<A HREF="venus-ds-5.html">Next</A>
<A HREF="venus-ds-3.html">Previous</A>
<A HREF="venus-ds.html#toc4">Contents</A>
</BODY>
</HTML>