From: Dave Chinner <david@fromorbit.com>
To: Jamie Lokier <jamie@shareable.org>
Cc: jim owens <jowens@hp.com>, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 0/4] Fiemap, an extent mapping ioctl - round 2
Date: Mon, 7 Jul 2008 17:40:21 +1000 [thread overview]
Message-ID: <20080707074021.GM29319@disturbed> (raw)
In-Reply-To: <20080704121325.GB29484@shareable.org>
On Fri, Jul 04, 2008 at 01:13:25PM +0100, Jamie Lokier wrote:
> Dave Chinner wrote:
> > The point of this SYNC flag is to ensure that you get nothing other
> > than blocks mapped to disk - no delalloc regions, etc. The only sane
> > way to do that is an atomic 'sync+map' operation. This is not a
> > filesystem specific feature - it's what the SYNC flag should be
> > defined as providing.
>
> Wait a minute.
>
> I think Jim, and you Dave, have imagined different use-cases
> for FIEMAP - and that's the reason for this difference of opinion.
>
> The two use-cases are:
>
> 1. To get a detailed fragmentation report, which is guidance (and
> can only be guidance: it may be invalid the moment it's returned).
>
> 2. To get a block mapping suitable for _reading_ those blocks from
> the physical device directly (e.g. LILO).
>
> For 1, atomic 'sync+map' does make sense, if you want the report to
> not have any delalloc extents, and you want to operate on files which
> are being modified by other processes.
>
> For 2, Jim appears to be correct that atomic 'sync+map' is not useful.
> You can only read blocks if the mapping remains stable after returning
> it, which means the application _must_ ensure no process is modifying
> the file, and that it's on a filesystem which doesn't arbitrarily move
> blocks when it feels like it. Given that,
> 'make_sure_nothing_modifies; atomic(sync + map); read data;
> ok_you_can_modify' is no different from 'make_sure_nothing_modifies;
> fsync(); map; read data; ok_you_can_modify'.
Like:
# xfs_freeze -f <mntpt>
# xfs_bmap -vvp <file>
# <do something nasty with direct block access>
# xfs_freeze -u <mntpt>
> You've explained that it does provide a
> guarantee: the resulting map will be valid for a consistent snapshot
> of the file at some instant in time during the FIEMAP call. In other
> words, with concurrent modifiers, atomic sync+map ensures no delalloc
> regions (is there anything else?) in the map, while fsync() + map gets
> close but does not ensure it.
Synchronisation with direct I/O, ensures unwritten extent conversion
completion with concurrent async direct I/O before mapping, space
preallocation, etc.
> Dave, can you give an actual situation where you have seen atomic
> 'sync+map' used with XFS where it is necessary for an application to
> behave correctly?
The only application that uses the XFS ioctls are
xfs utilities, and they tend to work around the assumption
that the mapping operation returns a consistent map at the
time the call was made.
> I'm having trouble thinking of one, other than "the
> current app code doesn't know what to do with a delalloc extent".
No, the XFS utilities want to know mappings, not delalloc extents -
i.e. they want to know where on disk stuff is, not where in memory
it is. That being said, there have been times when I've wanted to
know what ranges of the file were on disk or in memory when
analysing problems...
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
next prev parent reply other threads:[~2008-07-07 7:43 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
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 [this message]
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=20080707074021.GM29319@disturbed \
--to=david@fromorbit.com \
--cc=jamie@shareable.org \
--cc=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).