Re: RFC: O_PONIES semantics (well O_REWRITE)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2009-06-11 at 10:06 -0400, Rik van Riel wrote:
> Andreas Dilger wrote:
> > On Jun 10, 2009  21:03 -0400, Rik van Riel wrote:
> >> The semantics for O_REWRITE would be:
> >>
> >> 1) When opening a file O_REWRITE, the file handle points at
> >>    a freshly allocated, empty file.  The original file is
> >>    still available to programs that open the file without
> >>    O_REWRITE.
> >>
> >> 2) O_REWRITE can only be used in conjunction with O_WRONLY,
> >>    because the file descriptor is not associated with the
> >>    original file (which has data), but with an empty inode.
> >>
> >> 3) The code that implements O_REWRITE (kernel?  glibc?)
> >>    makes sure that:
> >>    - the new file is on the same filesystem as the original file
> >>    - the new file is not linked (so it is automatically freed
> >>      after a process or system crash)
> >>    - the new file's ownership, permissions and extended attributes
> >>      match that of the original file
> >>
> >> 4) The application that opens a file O_REWRITE is required
> >>    to rewrite the entire file.
> > 
> > This is all essentially open(O_CREAT|O_TRUNC|O_WRONLY)
> 
> With one big difference.
> 
> open(~/.myprog/myprog.conf, O_REWRITE|O_WRONLY) does not
> truncate the inode which myprog.conf lives in currently,
> but it opens a new inode instead.
> 
> This means that the old ~/.myprog/myprog.conf still exists,
> and will continue to exist until the program closes the
> O_REWRITE file handle - at which point the new contents
> will be attached to the filename.

How is this any different than just having your application use
mkostemp() to create a temporary dot file, then renaming it when done
writing?

Trond

--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux