Venus Data Structures: Volumes

Next Previous Contents

## 4. Volumes

Volumes are recorded using an umbrella data structure called the volume database (VDB), defined in venusvol.h.

- volume database. (persistent)
- contains volents (linked),
- contains mle
- resource limits on MLEs

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:

- volume ID (of course)
- state (hoarding, emulating, logging (write disconnected),etc.)
- flags (state transition pending, reintegrating, repairing, weakly connected, etc.) counts (readers, writers, etc. for synchronization)
- range pre-allocated fids
- version vector, callback status
- list of read/write volume ids (if replicated)
- replicated volume id (if read-write)
- CML
- link to VSG entry (vsgent)
- list of FSOs
- list of COP2 pending (cop2ent)
- list of entries requiring resolution (resent)
- statistics (vmon, etc.)

XXX What are observers? What are pre-allocated fids?

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

- list of cmlents
- ownership (only one user may own)
- statistics

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.

- opcode, operands
- flags (frozen, local repair, etc.)
- links to
  - CML
  - fsobjs
  - predecessor, successor

A very small structure holds the data associated to a cop2 event. This data is transient. cop2ent -- entry for pending COP2 events (transient)

- link to volume
- store ID
- update set

Another small structure holds data associated with fids needing resolution.

- resent -- entry for fids needing resolution (transient)
- fid, result

Next Previous Contents