Giter Site home page Giter Site logo

yggdrasil's Introduction

See recent updates and contact information at:

	http://locore.cs.washington.edu/yggdrasil/

# How to run the Yxv6 file system

We have tested it using the following setup:

- Cython 0.25.2
- Python 2
- Z3 4.4.2 (git commit e3f0aff318b5873cfe858191b8e73ed716405b59)
- Linux (with FUSE)

Install these packages before proceeding.  Other platforms or
versions may not work.

To compile:

	$ make all prod

To mount:

	$ python2 yav_xv6_main.py -o max_read=4096 -o max_write=4096 -s a -- /dev/sXX

To run verification:

	$ make verify

If your system doesn't have `cython2`, you may want to change it
to `cython` in the makefile (similarly for `python2`).

# What are the guarantees of a verified file system in Yggdrasil like Yxv6

The proof is that a file system implementation is a crash refinement
of its specification.  See the OSDI'16 paper for details.

Note that this does not mean that a verified file system in Yggdrasil
has zero bugs.  There can be bugs in the specification (or things
not modeled by the specification, like error code), the verification
toolchain, and the unverified part (e.g., the glue code to FUSE,
FUSE itself, and the Linux kernel).

# What's new in this version of Yxv6

This implementation of Yxv6 is a clean-up version.  It mostly follows
the design described in the OSDI'16 paper, with a few differences:

- the log size is doubled;
- the garbage collector (for orphan inodes) is more complete;
- ported to a new version of Cython;
- moved more code out of the unverified FUSE layer into the verified part.

You may notice changes in runtime performance and verification time
depending on your platform and tools (e.g., Z3).

# What file system features are missing from Yxv6

Yxv6 is a research prototype.  The implementation has the following
limitations:

- based on FUSE in user space than in the kernel
- Python runtime required (even after compiled by Cython)
- mtime only, no ctime/atime
- file size is limited
- verification time may vary depending on the Z3 version
- no ACL support
- no fallocate support
- no hardlinks

We don't think they are necessarily fundamental limitations of the
toolkit---feel free to send us pull requests if you add some of
these features.

yggdrasil's People

Contributors

helgikrs avatar xiw avatar

Watchers

James Cloos avatar z-in avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.