Skip to content
Jessica Winssinger edited this page Mar 31, 2018 · 3 revisions

0. Research

  • Git, svn: get a general idea of their file sys implementation, though ours won't be nearly as complex (and won't be distributed)
  • VMS for versioning.

1. Design Decision: Metadata and Namespace

  • metadata and namespace data structure(s)
    • "snapshots" and "checkpoints" as a subdirs of root? combine them? checkpoint dirs within snapshot db?

2. FUSE file system as base.

  • Set up base Unix file system using FUSE, similar to fusexmp; will serve as foundation to features we build on top.

3. Snapshots (Versioning)

(Per Prof. Kuenning's suggestion) VMS file system: every file has a version number, delimited using a semicolon. -- i.e. "foo.txt;1", "foo.txt;2"

Features

  • Similar to git commit; snapshot version with a short, fixed-sized message.

4. Checkpoints (Autosave)

Configurable Settings

  • Frequency: based on size of the change (i.e. number of characters)
    • Per Prof. Kuenning's suggestion: Use diff command to measure size of change between checkpoints.
  • Lifetime: age of checkpoint, when file was last modified (TODO: What does this function look like?)
  • Maximum: no more than x amount of checkpoints allowed to exist at once (i.e. delete old ones as new ones are made, for sake of space efficiency)

Clone this wiki locally