xref: /inferno-os/man/2/venti (revision 2b69dba5038ffd0b59cf30a4c44bce549e5097f8)
VENTI 2
NAME
Venti - access to Venti content-addressed filestore.
SYNOPSIS
.EX include "venti.m"; venti := load Venti Venti->PATH; Session: import venti; init: fn(); Session: adt { new: fn(fd: ref Sys->FD): ref Session; read: fn(s: self ref Session, score: Venti->Score, etype: int, maxn: int): array of byte; write: fn(s: self ref Session, etype: int, buf: array of byte): (int, Venti->Score); sync: fn(s: self ref Session): int; }; Score: adt { a: array of byte; eq: fn(a: self Score, b: Score): int; text: fn(a: self Score): string; parse: fn(s: string): (int, Score); zero: fn(): Score; };
DESCRIPTION
Venti is a block storage server intended for archival applications. The Venti module provides low-level access to a Venti server. The module assumes that the physical connection to the server has already been established (for example, by dial (2)). On a Venti server, a block is addressed by the SHA1 hash of the contents of that block, known as a score , and represented as a Score adt. Blocks are additionally tagged with a type , facilitating recovery in the event of corruption. A Session represents a session with a Venti server.

s .new(fd) New performs the initial handshake with the Venti server, returning established Session .

s .read(score, etype, maxn) Read tries to retrieve the block corresponding to score , and of type etype . The block must be no longer than maxn bytes. Etype is conventionally one of the constants Roottype , Dirtype , Datatype or Pointertype [0-9], where the different Pointertype s represent different depth levels within a Venti tree.

s .write(etype, buf) Write writes the data in buf to the Venti server. The block will be tagged with type etype . It returns a tuple, say ( ok , score ); on error, ok is -1, otherwise ok is 0 and score contains the Venti score for the block that has been written.

s .sync() Sync tells the Venti server to make sure that all data is committed to active storage.

SOURCE
/module/venti.m

/appl/lib/venti.b

BUGS