From: Dave Chinner <david@fromorbit.com>
To: Olaf van der Spek <olaf@xwis.net>
Cc: Christoph Hellwig <hch@infradead.org>, xfs@oss.sgi.com
Subject: Re: fsync, rename, O_ATOMIC/O_PONIES
Date: Mon, 5 Mar 2012 12:02:03 +1100 [thread overview]
Message-ID: <20120305010203.GK5091@dastard> (raw)
In-Reply-To: <4F53A2FF.3000305@xwis.net>
On Sun, Mar 04, 2012 at 06:14:39PM +0100, Olaf van der Spek wrote:
> On 2-3-2012 14:12, Christoph Hellwig wrote:
> >>I'd like to ask:
> >>- Is there a tool to log all unsafe operations?
> >
> >What is an unsafe operation? Anything that's dumb and might lose data?
>
> For example
>
> >The possibilities are sheer endless.
>
> And?
>
> >>- What is the *right* way to update a file?
> >
> > fd = open(tmpfile, ...);
> > write(fd, ...); // or any other update
> > fdatasync(fd);
> > rename(tmpfile, realfile);
>
> Argh, come on.
> That's not real and it's not complete. tmpfile is undefined, errors
> aren't handled and you have lots of unlisted assumptions or
> regressions.
The above is perfectly reasonable psuedo code for quickly describing
how to safely overwriting a file. If you want to know about error
handling and assumptions, read the man pages for operation.
To make it easy for you, I'll just point out this has already been
dealt with early in in the LWN thread for that article, here's the
link to the comment and the relevant LWN article providing you with
all the information you want:
http://lwn.net/Articles/476606/
https://lwn.net/Articles/457667/
And that my stance on this atomic rename subject is simply this: If
we want to change reanme behaviour, then the filesystem is not the
right place to do it - atomic rename semantics need to be defined
and enforced at the VFS. See here:
http://lwn.net/Articles/479152/
This has all been hashed out before - we don't need to revisit this
discussion here. If you want to solve the problem once and for all,
submit patches to LKML to implement the new rename semantics in a
new syscall....
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2012-03-05 1:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-02 12:39 fsync, rename, O_ATOMIC/O_PONIES Olaf van der Spek
2012-03-02 13:12 ` Christoph Hellwig
2012-03-04 17:14 ` Olaf van der Spek
2012-03-05 1:02 ` Dave Chinner [this message]
2012-03-05 15:44 ` Olaf van der Spek
2012-03-05 23:17 ` Dave Chinner
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=20120305010203.GK5091@dastard \
--to=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=olaf@xwis.net \
--cc=xfs@oss.sgi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox