<!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>