All of lore.kernel.org
 help / color / mirror / Atom feed
From: james harvey <jamespharvey20@gmail.com>
To: Btrfs BTRFS <linux-btrfs@vger.kernel.org>
Subject: [PATCH v2 1/3] btrfs-progs: map-logical: look at next leaf if slot > items
Date: Thu, 7 Jun 2018 03:19:57 -0400	[thread overview]
Message-ID: <CA+X5Wn4Ygijhnc2m4zHeH+wOTvFNOGepk5g08_D4a0dQWWMfpQ@mail.gmail.com> (raw)

btrfs-map-logical -l 10955980800 -b 4096 <path>
No extent found at range [10955980800,10955984896)

But, this extent exists.  btrfs-debug-tree shows:

   item 202 key (10955976704 EXTENT_ITEM 4096) itemoff 8772 itemsize 37
           refs 1 gen 62656 flags DATA
           shared data backref parent 142655488 count 1
...
   item 0 key (10955980800 EXTENT_ITEM 4096) itemoff 16246 itemsize 37
           refs 1 gen 62656 flags DATA
           shared data backref parent 128958464 count 1

The code searches for (<logical>, 0, 0), and looks forward then backward.  It
needs to go to the next leaf when slot > number of items on this leaf.

Signed-off-by: James Harvey <jamespharvey20@gmail.com>
---
 btrfs-map-logical.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/btrfs-map-logical.c b/btrfs-map-logical.c
index 7a8bcff9..2451012b 100644
--- a/btrfs-map-logical.c
+++ b/btrfs-map-logical.c
@@ -65,6 +65,14 @@ static int map_one_extent(struct btrfs_fs_info *fs_info,
        BUG_ON(ret == 0);
        ret = 0;

+       if (path->slots[0] >= btrfs_header_nritems(path->nodes[0])) {
+               ret = btrfs_next_leaf(fs_info->extent_root, path);
+               if (ret > 0) {
+                       ret = -ENOENT;
+                       goto out;
+               }
+       }
+
 again:
        btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]);
        if ((search_foward && key.objectid < logical) ||
--
2.17.0

             reply	other threads:[~2018-06-07  7:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-07  7:19 james harvey [this message]
2018-06-07  8:47 ` [PATCH v2 1/3] btrfs-progs: map-logical: look at next leaf if slot > items Su Yue

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=CA+X5Wn4Ygijhnc2m4zHeH+wOTvFNOGepk5g08_D4a0dQWWMfpQ@mail.gmail.com \
    --to=jamespharvey20@gmail.com \
    --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.