Skip to content
No description, website, or topics provided.
Go Python Shell
Branch: master
Clone or download
mindhog Don't orphan or release nodes with external references.
This fixes the case where we automatically commit while a file is being
written to.  In that case, during post-commit garbage collection, the file
node was GC'ed and the file was orphaned, causing all subsequent writes to be

This change requires distinguishing between a release of a deleted node and
release during GC.
Latest commit ec0f1e1 May 16, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Integrate SSL connections into the main program. Jan 17, 2019
go/src Got initial Go cache functionality working well enough to check in. Oct 17, 2017
lib/mawfs Don't orphan or release nodes with external references. May 16, 2019
test Don't orphan or release nodes with external references. May 16, 2019
.gitignore Added copyright notices, README and LICENSE. May 4, 2016
mawfs dd a few commands for debugging, fix a few problems in cache. May 2, 2019
mfs Removed trace print from mfs. May 2, 2019

MAWFS - A Personal Encrypted Distributed Filesystem

MAWFS aims to be an encrypted, distributed, branching filesystem. It is currently in early beta. You can create an encrypted filesystem and replicate with merging among a set of peers.

If you want to play with it, the easiest way to do so is to pull the docker image crack/mawfs from docker hub. Alternately, you can build from source.

MAWFS is written in Crack.. If you want to build it from source, you'll need at least Crack 1.4, and preferably HEAD on the master branch, to do so.

Usage Example

$ mkdir backing fs  # Create a directory for the backing store and a
                    # mountpoint for the filesystem
$ export CRACK_LIB_PATH=mawfs/lib
$ echo 's3cr37-p455w0rd!' | mawfs/mawfs run backing fs
$ echo 'this will be encrypted!' >fs/myfile.txt
$ cat fs/myfile.txt
$ mawfs/mawfs commit fs  # generate a commit record.
$ fusermount -u fs  # To unmount.

Every directory in the filesytem includes a special maintenance directory (".mawfs", which is invisible to a directory listing) that allows you to interact with the filesystem. This current contains a "README" file containing information about MAWFS and a "branch" file containing the current branch:

$ cat fs/.mawfs/branch

This code is still likely to have a few bugs in it and we will likely introduce incompatibilities, so it is not recommended that you use MAWFS for anything important yet.

Current Status

The system is currently in early beta. While it is largely usable for experimental purposes, you are advised against relying on the security and integrity of the system at this time.

If you do use it for anything important, you are encouraged to make local backups and perform regular verification. You are also encouraged to subscribe to the mailing list to stay notified of any security issues that emerge.

Bug reports and code contribuutions gladly accepted. Please sign Google's Contributor License Agreement before sending any pull requests.


Related Projects

  • Peergos - this is a very similar project which MAWFS will hopefully be interoperable with at some point.
  • IPFS.
  • ORI

"MAWFS" stands for "Mike's Awesome Filesystem". It started out that way and we have since been unable to come up with a better name :-)

MAWFS is not an official Google project.

You can’t perform that action at this time.