CSci475 term project

The project is to implement a versioning file system. It will be implemented atop an ordinary file system by way of a kernel module (and most likely, user space code).

Each file in the BAMBOO1 filesystem is presented in an ordinary fashion to the user, thus there should be no need to change any application code.2 The visible file is always the most recent version, and if an application writes to that file, a new version is created. Associated with each file are other revisions which become visible when "//" is appended to the filename. In this mode, the filename acts as a directory name, and entries in the directory exposing the revision tree.

Some scheme of "//regexp" selectively shows versions in some way.

Mount needs to discover the file system (perhaps through hooks to the operating system) so that mount root-of-physical-hierarchy root-of-bamboo-hierarchy -o bamboo makes sense.

A version of fsck needs to be written to validate consistency of the bamboo data.

The existing userspace filesystem framework, FUSE, appears to provide the hooks needed to implement this project. Here is a brief description of the filesystem and information about related loadable rpms.

Comparable projects include CopyFS, CvsFS, and User-level Versioning File System.

1 So named because one student suggested that shoving bamboo splinters under one's fingernails might be more fun than writing a file system.

2We must validate proper operation of other commands such as ls, cd, cat.


CSci475/term_project.html was last edited by Randolph Bentson, on 2007/03/26T11:27:30-07:00