From: Eric Sandeen <sandeen@redhat.com>
To: Andreas Dilger <andreas.dilger@oracle.com>
Cc: "Theodore Ts'o" <tytso@mit.edu>, linux-ext4@vger.kernel.org
Subject: Re: FIEMAP sometimes returns bad information for delalloc extents
Date: Sat, 27 Mar 2010 13:35:17 -0500 [thread overview]
Message-ID: <4BAE4FE5.7020004@redhat.com> (raw)
In-Reply-To: <DB0601D5-963C-4017-B7EA-A3764D2067EF@oracle.com>
Andreas Dilger wrote:
> On 2010-03-27, at 09:07, Theodore Ts'o wrote:
>> I was monitoring the progress of a distributed download program, and saw
>> the following output from two runs of filefrag taken a few seconds
>> apart:
>>
>> 8 790 8825663 8825551 65
>> 9 855 0 8825727 319 unknown,delalloc
>> 10 1174 8798367 318 128
>>
>> 7 790 8825663 8825559 69
>> 8 1174 8798367 8825731 128
>>
>> The length of the delalloc extent, 319, is bogus. The 319 seems to come
>> from 1174 - 855. But it's not actually the number of delayed
>> allocation blocks, as we can see when the blocks finally get written;
>> apparently it was only 4 blocks long.
>
> I'm surprised it shows anything at all for delalloc blocks, since AFAIK
> FIEMAP is only walking the extent tree. It would be interesting if it
> walked the VM pagetable for unallocated extents in the file, and beyond
> i_size.
it does this in the callback for ext4_ext_walk_space:
if (newex->ec_type == EXT4_EXT_CACHE_GAP) {
...
page = find_get_page(inode->i_mapping, offset);
...
bh = page_buffers(page);
...
if (buffer_delay(bh)) {
flags |= FIEMAP_EXTENT_DELALLOC;
...
so it was an attempt, at least, to flag which extents are delalloc.
FWIW, on xfs xfs_bmap initially would cause a file flush, it didn't even ever
try to report delalloc until fiemap came along ...
-Eric
prev parent reply other threads:[~2010-03-27 18:35 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-27 15:07 FIEMAP sometimes returns bad information for delalloc extents Theodore Ts'o
2010-03-27 17:52 ` Andreas Dilger
2010-03-27 18:35 ` Eric Sandeen [this message]
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=4BAE4FE5.7020004@redhat.com \
--to=sandeen@redhat.com \
--cc=andreas.dilger@oracle.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.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.