Hi FUSE supports per file descriptor I/O direct flag, which may be decided by the filesystem (FUSE_FOPEN_DIRECT set in oflags in open's reply), something we have trouble to deal with since we keep that flag at vnode layer.
Here is a simple test where it breaks on glusterfs 3.6.0 rm -f test.txt sync sleep 3 jot -b a -s '' 10 >> test.txt jot -b b -s '' 10 >> test.txt cat test.txt On first open of test.txt we write through the cache. On second open, the fileysystem specify direct I/O, we bypass the cache. The correct data is written to the filesystem, but if when we read with cat, the second write's data (the "b") is replaced by nul characters readen from the cache. Here is a proposed fix, which invalidates the cache when we use direct I/O: http://ftp.epsci.fr/shadow/manu/iodirect.patch Opinions? -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz [email protected]
