All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: Lennert Buytenhek <buytenh@wantstofly.org>, linux-btrfs@vger.kernel.org
Subject: Re: FS_IOC_FIEMAP fe_physical discrepancies on btrfs
Date: Sun, 28 Oct 2018 10:15:57 +0800	[thread overview]
Message-ID: <72a61025-fa97-131e-b428-9b1356a949bc@gmx.com> (raw)
In-Reply-To: <20181027154555.GH16768@wantstofly.org>


[-- Attachment #1.1: Type: text/plain, Size: 1411 bytes --]



On 2018/10/27 下午11:45, Lennert Buytenhek wrote:
> Hello!
> 
> FS_IOC_FIEMAP on btrfs seems to be returning fe_physical values that
> don't always correspond to the actual on-disk data locations.  For some
> files the values match, but e.g. for this file:
> 
> # filefrag -v foo
> Filesystem type is: 9123683e
> File size of foo is 4096 (1 block of 4096 bytes)
>  ext:     logical_offset:        physical_offset: length:   expected: flags:
>    0:        0..       0:    5774454..   5774454:      1:             last,eof
> foo: 1 extent found
> #
> 
> The file data is actually on disk not in block 5774454 (0x581c76), but
> in block 6038646 (0x5c2476), an offset of +0x40800.  Is this expected
> behavior?  Googling didn't turn up much, apologies if this is an FAQ. :(

Btrfs uses chunk map to build a logical address space.

And all bytenrs in btrfs are in that logical address space, not physical
disk bytenr.

So you need refer to chunk mapping to get the real on-disk bytenr.

You could consider inside btrfs there is another layer like LVM, and
btrfs is on a super large virtual device.

The result returned by fiemap() is just the bytenr in that virtual
device (LV).
For real on-disk bytenr (PV), you need to do the mapping calculation.

Thanks,
Qu

> 
> (This is on 4.18.16-200.fc28.x86_64, the current Fedora 28 kernel.)
> 
> 
> Thanks,
> Lennert
> 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

      parent reply	other threads:[~2018-10-28  2:20 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-27 15:45 FS_IOC_FIEMAP fe_physical discrepancies on btrfs Lennert Buytenhek
2018-10-27 16:50 ` Andrei Borzenkov
2018-10-28  2:15 ` Qu Wenruo [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=72a61025-fa97-131e-b428-9b1356a949bc@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=buytenh@wantstofly.org \
    --cc=linux-btrfs@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 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.