31 lines
816 B
Markdown
31 lines
816 B
Markdown
|
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`, or if
|
||
|
you tell the kernel to drop its caches.
|
||
|
|
||
|
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 than `SEEK_SET` are not supported.
|
||
|
* There are probably bugs, especially with large files.
|