All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rik van Riel <riel@redhat.com>
To: Andreas Dilger <adilger@sun.com>
Cc: linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Ray Strode <rstrode@redhat.com>,
	elb@psg.com
Subject: Re: RFC: O_PONIES semantics (well O_REWRITE)
Date: Thu, 11 Jun 2009 10:06:43 -0400	[thread overview]
Message-ID: <4A310F73.6080608@redhat.com> (raw)
In-Reply-To: <20090611055309.GR9002@webber.adilger.int>

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.

-- 
All rights reversed.

  reply	other threads:[~2009-06-11 14:06 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-11  1:03 RFC: O_PONIES semantics (well O_REWRITE) Rik van Riel
2009-06-11  5:53 ` Andreas Dilger
2009-06-11 14:06   ` Rik van Riel [this message]
2009-06-11 14:23     ` Trond Myklebust
2009-06-11 14:32       ` Ray Strode
2009-06-17 13:52       ` Rik van Riel
2009-06-11  9:51 ` Artem Bityutskiy
2009-06-12  2:07 ` Jamie Lokier
2009-06-12  2:20   ` Matthew Wilcox
2009-06-12 17:06     ` Ray Strode

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A310F73.6080608@redhat.com \
    --to=riel@redhat.com \
    --cc=adilger@sun.com \
    --cc=elb@psg.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=rstrode@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.