From: Valient G. <vg...@po...> - 2005-05-25 18:39:38
|
On Wednesday 25 May 2005 19:43, John Muir wrote: > Why isn't O_CREAT passed through to the open call in the FUSE library > (or from the kernel for that matter)? > > I'd like to avoid a whole bunch of empty files on my underlying > file-system. Is there a way to handle this? An open(... O_CREAT) gets turned into a mknod followed by an open. Is your open() failing? A common problem is that open(..., O_RDWR | O_CREAT, 0222) can create files which do not have write access, yet it is valid to have them opened in read-write mode. So after the mknod you end up with a file that doesn't have write permission, followed by a request to open for write. But it seems this question has to be revisited now if the default_permission flag disabled. When fuse's default_permission flag is in effect, then the kernel has already checked permissions before passing along the requests, so you can assume that it is ok to proceed and open the file for write anyway. But what happens if default_permission is not in effect? Then how do we know it is ok to open a file for write when it doesn't allow write access? Valient |