From: "Theodore Y. Ts'o" <tytso@mit.edu>
To: Chris Mason <clm@fb.com>
Cc: David Sterba <dsterba@suse.cz>,
Jayashree Mohan <jayashree2912@gmail.com>,
linux-btrfs <linux-btrfs@vger.kernel.org>,
fstests <fstests@vger.kernel.org>,
Vijaychidambaram Velayudhan Pillai <vijay@cs.utexas.edu>,
Filipe Manana <fdmanana@kernel.org>
Subject: Re: Inconsistent behavior of fsync in btrfs
Date: Fri, 27 Apr 2018 16:53:13 -0400 [thread overview]
Message-ID: <20180427205313.GM5965@thunk.org> (raw)
In-Reply-To: <1A75793D-6487-4EE6-9F4D-AD538D7283CA@fb.com>
On Fri, Apr 27, 2018 at 11:33:29AM -0600, Chris Mason wrote:
> My goal for the fsync tree log was to make it just do the right thing most
> of the time. We mostly got there, thanks to a ton of fixes and test cases
> from Filipe.
>
> fsync(some file) -- all the names for this file will exist, without having
> to fsync the directory.
>
> fsync(some dir) -- ugh, don't fsync the directory. But if you do, all the
> files/subdirs will exist, and unlinks will be done and renames will be
> included. This is slow and may require a full FS commit, which is why we
> don't want dirs fsunk.
What ext4 does is this:
fsync(some file) -- for a newly created file, the filename that it was
created under will exist. If the file has a hard-link added,
the hard link is not guarnateed to be written to disk
fsync(some dir) -- all changes to file names in thentee directory will
exist after the crash. It does *not* guarantee that any data
changes to any of files in the directories will persist after
a crash.
It seems to me that it would be desirable if all of the major file
systems have roughly the same minimum guarantee for fsync(2), so that
application writers don't have to make file-system specific
assumptions. In general the goal ought to be "the right thing" should
happen.
The reason why ext4 doesn't sync all possible hard link names is that
(a) that's not a common requiremnt for most applications, and (b) it's
too hard to find all of the directories which might contain a hard
link to a particular file. But otherwise, the semantics seem to
largely match up with what Chris as suggested for btrfs.
- Ted
next prev parent reply other threads:[~2018-04-27 20:53 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-25 2:35 Inconsistent behavior of fsync in btrfs Jayashree Mohan
2018-04-25 3:08 ` Chris Murphy
[not found] ` <CAJCQCtT7S9Qb-m3-7EXJPwtMT9nuUJjDykHi915KU+fc4fB-aQ@mail.gmail.com>
2018-04-25 3:10 ` Vijaychidambaram Velayudhan Pillai
2018-04-25 3:16 ` Vijaychidambaram Velayudhan Pillai
2018-04-25 12:36 ` Ashlie Martinez
2018-04-25 13:53 ` Ashlie Martinez
2018-04-26 16:28 ` Chris Mason
2018-04-27 0:59 ` Jayashree Mohan
2018-04-27 15:26 ` Chris Mason
2018-04-27 16:07 ` David Sterba
2018-04-27 17:33 ` Chris Mason
2018-04-27 20:53 ` Theodore Y. Ts'o [this message]
2018-04-27 23:24 ` Chris Murphy
2018-04-27 23:44 ` Jayashree Mohan
2018-04-29 20:55 ` Vijay Chidambaram
2018-04-29 22:16 ` Theodore Y. Ts'o
2018-04-29 23:21 ` Vijay Chidambaram
2018-04-30 14:30 ` Chris Mason
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=20180427205313.GM5965@thunk.org \
--to=tytso@mit.edu \
--cc=clm@fb.com \
--cc=dsterba@suse.cz \
--cc=fdmanana@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=jayashree2912@gmail.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=vijay@cs.utexas.edu \
/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.