Skip to content

lluchs/suvi

Repository files navigation

Suvi: Crash Consistency Testing of PM File Systems

Suvi is a tool for crash consistency testing of PM file systems. Suvi implements a testing pipeline that traces PM and NVMe accesses of a file system, then replays the trace to simulates crashes and to create crash images. Based on the state contained in the crash images, Suvi can automatically check for crash consistency properties such as atomicity.

Setup

Suvi's build environment is managed with Nix. Install Nix and enable flakes (experimental-features = nix-command flakes), then run:

# Build Suvi (creates a symlink `result`)
nix build .

# Build test VMs
vms=$(nix build --print-out-paths --no-link .#fs-testing.vms)

# Test a file system (creates a folder `vm_nova`)
result/bin/suvi run $vms/vm_nova.yaml fs-testing/tests/test_*.yaml

# Inspect results
result/bin/suvi analyze-bulk vm_nova/test_*
result/bin/suvi analyze-result vm_nova/test_hello-world

Development

# Enter a development environment.
nix develop

# Build Suvi
cargo build --release
cargo build

# Run Suvi
target/debug/suvi

Note that by default, the release builds of the tracer plugins are used.

License

Suvi is released under the MIT license, see LICENSE for details.

About

Crash consistency testing for PM file systems

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •