From: Mark W. <mwa...@gm...> - 2007-11-13 14:45:38
|
I'm sorry for the confusion. Here's the executive summary. My application has an access pattern that goes something like this: fd = open("temp", O_CREAT|O_RDWR); link("temp", "lock"); unlink("temp"); pwrite(fd, buf, 24, 0); rename("lock", "log"); close(fd); fd2 = open("log", O_RDWR); pread(fd2, buf, 24, 0); close(fd2); This pattern leads to some sort of incorrect getattr caching such that Fuse thinks the file "log" is empty right up to the call to pread. Because of this, my read function is never called and pread returns EOF instead of 24 bytes. It was mentioned that direct_io could address this problem; however, my application also uses mmaps and those two don't play nicely together iirc. I included a version of my fuse file system and an example application code that demonstrates the access pattern above. Luis took a look at it and confirmed the problem. It is also attached to this email. I am using Fuse 2.5.3 since I'm on a 2.4 kernel. On Nov 13, 2007 6:46 AM, Miklos Szeredi <mi...@sz...> wrote: > > It appears the direct_io options won't work out for me since I'll need > > to use mmap as well. Anybody else tried out my test code? > > Which test code? > > I'm thoroughly confused by this thread. What is exactly the problem? > > Thanks, > Miklos > |