Skip to content

WiscADSL/cuttlefs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cuttlefs

FUSE file system with private page cache to simulate post fsync failure characteristics of modern file systems

Installation

Install ninja and meson

sudo apt-get install --yes ninja-build
git clone https://github.com/mesonbuild/meson.git
cd meson
git checkout 0.52.0
pip install .

Install libfuse v3.8.0

git clone https://github.com/libfuse/libfuse.git
cd libfuse
git checkout "fuse-3.8.0"
mkdir build && cd $_ && meson ..
ninja
sudo chown root:root util/fusermount3
sudo chmod 4755 util/fusermount3
python -m pytest test/
sudo ninja install

Install python bindings for fuse

git clone https://github.com/fusepy/fusepy.git
cd fusepy
git checkout "v2.0.4"
pip install .

Install cuttlefs

git clone git@github.com:WiscADSL/cuttlefs.git
cd cuttlefs
pip install .

cd tests/ && python -m unittest -v fstests

Usage

$> cuttlefs --help

usage: cuttlefs [-h] [--fs-metadir FS_METADIR] [--log-level {debug,info,warn,error}] [--foreground] [--nothreads] [--fsync-behavior {ext4-ordered,ext4-data,xfs,btrfs}] [--port PORT] [--fault-list-file FAULT_LIST_FILE] root mount

positional arguments:
  root                  Existing folder to act as root
  mount                 Mount point for fuse filesystem

optional arguments:
  -h, --help            show this help message and exit
  --fs-metadir FS_METADIR
                        meta directory for file system, defaults to current directory
  --log-level {debug,info,warn,error}
                        Log Level, defaults to info
  --foreground          run fuse in foreground? defaults to False
  --nothreads           run fuse without threads? defaults to False
  --fsync-behavior {ext4-ordered,ext4-data,xfs,btrfs}
                        simulates fsync behavior, defaults to ext4-ordered
  --port PORT           port to run http server, defaults to 8888
  --fault-list-file FAULT_LIST_FILE
                        File containing a json list of dictionaries of the form {"path": "/foo", "seq": "xxwxW", "block": 4} OR {"path": "/foo", "seq": "xxwxW", "sector": 4}

About

FUSE file system with private page cache to simulate post fsync failure characteristics of modern file systems

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors