diff --git a/README.md b/README.md index a0a3bf2..7576988 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ 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 +cat ~/corrupt-fs/hello.txt # returns bad data ``` Limitations: diff --git a/src/fs.rs b/src/fs.rs index a8bde04..11f726d 100644 --- a/src/fs.rs +++ b/src/fs.rs @@ -245,11 +245,12 @@ impl Filesystem for CorruptFs { let open_file = OpenFile { ino, flags }; self.open_fds.insert(fh, OpenFd::File(open_file)); - let mut o_flags = FOPEN_KEEP_CACHE; - if (flags & O_DIRECT) != 0 { - o_flags |= FOPEN_DIRECT_IO; - } - + let o_flags = + if (flags & O_DIRECT) != 0 { + FOPEN_DIRECT_IO + } else { + FOPEN_KEEP_CACHE + }; reply.opened(fh, o_flags); } else { reply.error(ENOENT); @@ -296,11 +297,12 @@ impl Filesystem for CorruptFs { }; self.open_fds.insert(fh, OpenFd::File(open_file)); - let mut cr_flags = FOPEN_KEEP_CACHE; - if (flags & O_DIRECT) != 0 { - cr_flags |= FOPEN_DIRECT_IO; - } - + let cr_flags = + if (flags & O_DIRECT) != 0 { + FOPEN_DIRECT_IO + } else { + FOPEN_KEEP_CACHE + }; reply.created(&TTL, &attr, 0, fh, cr_flags); } }