src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.md |
This is a FUSE filesystem that always returns random corrupted data when you read back files you write.
The filesystem will tell the kernel to use its filesystem buffer cache,
so you won't see the corruption unless you read with O_DIRECT
.
Run with:
mkdir ~/corrupt-fs
cargo run -- --allow-direct-io ~/corrupt-fs
If you don't specify --allow-direct-io
, direct I/O will not be
supported.
To test from the cmdline:
echo "hello world" > ~/corrupt-fs/hello.txt
cat ~/corrupt-fs/hello.txt # returns good data from fscache
dd if=~/corrupt-fs/hello.txt iflag=direct # returns bad data
Limitations:
- Subdirectories are not supported.
lseek()
modes other thanSEEK_SET
are not supported.- There are probably bugs, especially with large files.