BrewFSBrewFS
BrewFSBrewFS
Get started
OperationsObservabilityControl PlaneGC CommandTestingPOSIX TestingKubernetes Operator
Operations

POSIX Testing

Filesystem conformance coverage, reproducible runners, and explicit limits.

BrewFS treats POSIX behavior as a release requirement. The test program checks FUSE and metadata behavior across SQLite, Redis, etcd, and TiKV with RustFS object storage. A passing suite is evidence for the configured cases, not a claim that every kernel or FUSE capability is implemented.

What is covered

AreaExamples
Namespace and metadatacreate, unlink, rename, hard links, timestamps, xattrs, special inodes, setgid inheritance
Permissions and pathsownership, modes, traversal, link and unlink behavior
ConcurrencyPOSIX byte-range locks, lookup/stat paths, close-to-open behavior, transactional metadata updates
FUSE and writebacktruncate, flush, fsync-sensitive paths, cache invalidation, object-store commits

Current validation coverage

SuiteScopePublished result
xfstestsFUSE, metadata, locking, writeback, object-store behavior708 / 708 configured cases on SQLite, Redis, etcd, and TiKV
pjdfstestPOSIX paths, permissions, links, special nodes, rename, unlink, timestamps246 files and 9,134 assertions on Redis and TiKV
LTP filesystemLinux filesystem scenarios and record-lock coveragePassed on all four backends with documented buffered iogen01 skip
stress-ng smokeShort metadata and small-write stressPassed with no residual files

Run the suites

# Rust unit, integration, and feature checks
cargo test --workspace --lib --bins -- --test-threads=1

# Redis + RustFS POSIX suites
bash docker/compose-xfstests/run_redis_pjdfstest.sh
bash docker/compose-xfstests/run_redis_xfstests.sh
bash docker/compose-xfstests/run_redis_ltp.sh
bash docker/compose-xfstests/run_redis_stress_ng.sh --profile smoke

# Target one xfstests exclusion before considering its removal
bash docker/compose-xfstests/run_redis_xfstests.sh --check-args "-fuse generic/091"

All modern Compose runners retain reports, logs, and skip-file context below docker/compose-xfstests/artifacts/.

Explicit limitations

  • generic/075 remains excluded. Buffered FUSE mmap after truncate/extend can expose stale page-cache bytes; direct I/O cannot run the mmap shape.
  • LTP iogen01 remains skipped in the normal buffered profile because a split-write/page-cache coherency race is still being diagnosed.
  • open_by_handle_at, shared mount propagation, selected O_DIRECT sparse-hole cases, and long fsstress soaks are documented exclusions or manual suites.

An exclusion is not removed after one local pass. Re-run the case without the default exclude file, inspect its artifacts, then repeat it or run the complete suite before promoting it to required coverage.

Performance changes must preserve correctness

Read/write hot-path changes must re-run these suites and the performance guard. See Benchmark Methodology for the profile and regression-budget rules.

Testing

Test suites and benchmark entries.

Kubernetes Operator

Deploy BrewFS backend services and managed mount workloads on Kubernetes.

On this page

What is coveredCurrent validation coverageRun the suitesExplicit limitationsPerformance changes must preserve correctness