[Bug]
When given '-a' option, btrfs-find-root will output all possible tree
roots but the exact matched one.

[Reason]
Result printing skipes the exact match one, as it will normally be shown
before the alternative ones.
But when '-a' is given, that's not the case.

[Fix]
Just show the exact match one for search all case.

Reported-by: Marc Merlin <m...@merlins.org>
Signed-off-by: Qu Wenruo <quwen...@cn.fujitsu.com>
---
 btrfs-find-root.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/btrfs-find-root.c b/btrfs-find-root.c
index 1cb3085..01b3603 100644
--- a/btrfs-find-root.c
+++ b/btrfs-find-root.c
@@ -109,6 +109,9 @@ static void print_one_result(struct cache_extent 
*tree_block,
               tree_block->start, generation, level);
        if (unsure)
                printf("but we are unsure about the correct 
generation/level\n");
+       else if (level == filter->match_level &&
+                generation == filter->match_gen)
+               printf("and it matches superblock\n");
        else
                printf("but generation/level doesn't match, want gen: %llu 
level: %u\n",
                       filter->match_gen, filter->match_level);
@@ -129,8 +132,10 @@ static void print_find_root_result(struct cache_tree 
*result,
                                struct btrfs_find_root_gen_cache, cache);
                level = gen_cache->highest_level;
                generation = cache->start;
+               /* For exact found one, skip it as it's output before */
                if (level == filter->match_level &&
-                   generation == filter->match_gen)
+                   generation == filter->match_gen &&
+                   !filter->search_all)
                        continue;
                for (tree_block = last_cache_extent(&gen_cache->eb_tree);
                     tree_block; tree_block = prev_cache_extent(tree_block))
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to