Venti/VT

indirect block 3 May

array of blockrefs

blockref 3 May

bs(flags:indirect)bs(span)bs(hashen)hash

.vt file content 2 May

each line:
hex(dirent) iso8601time comment(username direntName etc…)

dirent format 2 May

bs(type:0=file,1=dir,...) bs(flags:1=hasmeta,2=hasname) bs(metalen)meta blockref

TODO

writable files – each write sequence consists of a “file” overlaid on the read-only previous content
http interface
fuse interface
inodes/hard links?
symlinks
class diagram: store
block interface: either a blockref or indirect blockref or a “live file” later
iblock encoding: flags, size, hash; flags=(indirect, hasmeta, oddhash)
webdav interface once fs working?
9p server?
rolling hash in C; yielding (offset,hash) tuples?

Prefetch multiple blocks, eg from an iblock. Scatter/gather wrapper? With progressive yield of blocks in order

“vt push targetStore”
“vt scan” – don’t open -S/-C stores
sync() on stream/tcp close
flat file cache for blocks? make temp unlinked, trunc, append, rewind at threshold
optional compression in store? test space cost of compress of compressed data
sync() operation for blocklists; close() collapses and sync()s ? sync collapses?
BlockSink take ibref initialiser?
cache seek()ed block in readOpen class
inode chunk: flags; [meta] (if flags&0×01); blockref
store priority queue – tuples=pool – multistores
status line queue size / throughput reporting
mount/unpack/ls syntax: / and ./ point at a .vt file, {isotime} for choosing line no later than
leaf level file copy from one store to another
leaf level dir tree copy from one store to another
gdbmstore to use a lock around dbm accesses
gdbmstore – defer file.flush() for speed?
findeEdge – char search – defer until len(data) >= max(len(vocab-word))
use a deque for LRU caches
findWord won’t see words that cross data block boundaries
open/close paradigm for timely shutdown
check stores raise KeyError on no match in getitem
Trash
rolling hash better algorithm
Trash
findEdge – search on leading char of vocab words
Trash
rolling hash:
Trash
rolling hash: &0×001fffff, shift left 7, add (ch&0×7f ^ (ch&0×80>>7)), check % 4093 == 1
Trash
hash type mapping: 0:sha1, 1:?...
Trash
rolling hash: pushable parser for nested data
Trash
rolling hash: augument with recognition strings by hash
Trash
metadata: inline text in dir, with i: field to indirect to a blockref
Trash
don’t compress metadata
Trash
dirs: file type: 0=file, 1=dir, 2…
Trash
change blockref format: flags(indirect=1,non-sha1hash=2)bs(span)[bs(hashtype)]hash
Trash
“vt pull sourceStore”
Trash
remote async tagged block interface
Trash
decide on new metadata scheme: ACL: u:user:rw-x, g:group:rw-x, o:rw-x, m:mtime, a:atime, c:ctime