From: jim owens <jowens@hp.com>
To: linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 0/4] Fiemap, an extent mapping ioctl - round 2
Date: Wed, 02 Jul 2008 19:48:07 -0400 [thread overview]
Message-ID: <486C13B7.4030402@hp.com> (raw)
In-Reply-To: <1214490465.6237.24.camel@norville.austin.ibm.com>
I'm back from vacation and ready to cause fiemap() trouble.
Dave Kleikamp wrote:
> On Thu, 2008-06-26 at 09:15 -0500, Eric Sandeen wrote:
>
>>>SYNC really doesn't look like it belongs, and it's only there so that
>>>the new ioctl acts like the xfs ioctl.
>>
>>I disagree, while it may have been inspired by the xfs behavior, it's
>>not at all xfs specific.
>>
>>If a filesystem implements delalloc, you may want to know which ranges
>>are still delalloc in the fiemap output, or you may want to put them on
>>disk and know the actual physical location. And if you want a snapshot
>>of an actual, consistent layout of the file at a point in time, then you
>>need an atomic sync+map - for any filesystem.
>
> This makes sense. In fact, I could see always doing the sync if there
> are delalloc blocks to ensure that the location of the blocks will
> always be returned.
>
> I guess I was put off by Andreas' response that FIEMAP_FLAG_SYNC is
> there because xfsbmap had it "isn't harmful either". This seemed a bit
> weak, but I see that there is a better justification than just that.
I say IT IS HARMFUL to have the FIEMAP_FLAG_SYNC.
The email trail points out how this so-called atomic sync+map
will lead programmers to write bad code because it leads them
to think there is some valuable guarantee of consistency by
using the SYNC flag. This is not true.
The fiemap by itself is equivalent in all cases to reading
multiple disk blocks, while someone else is writing some
random subset of the same blocks. You have data, but it is
not a clean "before" or "after" picture.
The only way to get a true useful snapshot is to have a
set of commands doing:
freeze_metadata()
read_metadata()
... userspace operate on metadata ...
unfreeze_metadata()
If you are going to define fiemap to have an internal
freeze_metadata(), then I say that is even MORE HARMFUL
because it makes every (de)allocate/(de)compress/move
code path take a giant lock just so fiemap can get a
static picture that encompasses all in-range extents.
And that static picture can be invalid the moment the
giant lock is released.
jim
next prev parent reply other threads:[~2008-07-02 23:48 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-25 22:18 [PATCH 0/4] Fiemap, an extent mapping ioctl - round 2 Mark Fasheh
2008-06-26 3:03 ` Andreas Dilger
2008-06-26 9:36 ` Jamie Lokier
2008-06-26 10:24 ` Andreas Dilger
2008-06-26 11:37 ` Anton Altaparmakov
2008-06-26 12:19 ` Jamie Lokier
2008-06-26 13:16 ` Dave Chinner
2008-06-26 13:27 ` Jamie Lokier
2008-06-26 13:48 ` Eric Sandeen
2008-06-26 14:16 ` Jamie Lokier
2008-06-26 16:56 ` Andreas Dilger
2008-06-29 19:12 ` Anton Altaparmakov
2008-06-29 21:45 ` Dave Chinner
2008-06-30 22:57 ` Jamie Lokier
2008-06-30 23:07 ` Mark Fasheh
2008-07-01 2:01 ` Brad Boyer
2008-07-02 6:38 ` Andreas Dilger
2008-07-02 6:33 ` Andreas Dilger
2008-07-02 14:26 ` Jamie Lokier
2008-06-26 17:17 ` Andreas Dilger
2008-06-26 14:03 ` Eric Sandeen
2008-06-27 1:41 ` Dave Chinner
2008-06-27 9:41 ` Jamie Lokier
2008-06-27 10:01 ` Dave Chinner
2008-06-27 10:32 ` Jamie Lokier
2008-06-27 22:48 ` Andreas Dilger
2008-06-28 4:21 ` Eric Sandeen
2008-07-02 6:26 ` Andreas Dilger
2008-07-02 14:28 ` Jamie Lokier
2008-07-02 21:20 ` Mark Fasheh
2008-07-03 14:45 ` Jamie Lokier
2008-06-26 14:04 ` Dave Kleikamp
2008-06-26 14:15 ` Eric Sandeen
2008-06-26 14:27 ` Dave Kleikamp
2008-07-02 23:48 ` jim owens [this message]
2008-07-03 11:17 ` Dave Chinner
2008-07-03 12:11 ` jim owens
2008-07-03 22:51 ` Dave Chinner
2008-07-04 8:31 ` Andreas Dilger
2008-07-04 12:13 ` Jamie Lokier
2008-07-07 7:40 ` Dave Chinner
2008-07-07 16:53 ` Jamie Lokier
2008-07-07 22:51 ` Dave Chinner
2008-07-07 21:16 ` jim owens
2008-07-08 3:01 ` Dave Chinner
2008-07-07 22:02 ` jim owens
2008-07-09 2:03 ` Jamie Lokier
2008-07-03 12:21 ` jim owens
2008-07-03 12:42 ` Andi Kleen
2008-07-04 20:32 ` Anton Altaparmakov
2008-07-05 10:49 ` Jamie Lokier
2008-07-05 21:44 ` Anton Altaparmakov
2008-07-07 23:01 ` jim owens
2008-07-08 1:51 ` Dave Chinner
2008-07-08 13:02 ` jim owens
2008-07-08 14:03 ` jim owens
2008-07-08 14:39 ` jim owens
2008-07-08 14:30 ` Theodore Tso
2008-07-09 1:50 ` Jamie Lokier
2008-06-26 17:01 ` Andreas Dilger
2008-07-03 14:37 ` jim owens
2008-07-03 15:17 ` Jamie Lokier
2008-07-04 8:49 ` Andreas Dilger
2008-07-04 11:28 ` Jamie Lokier
2008-07-03 23:00 ` Dave Chinner
2008-07-04 9:00 ` Andreas Dilger
2008-07-07 23:28 ` jim owens
2008-07-09 1:53 ` Jamie Lokier
2008-07-09 15:01 ` jim owens
2008-07-08 0:06 ` jim owens
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=486C13B7.4030402@hp.com \
--to=jowens@hp.com \
--cc=linux-fsdevel@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).