btrfs-progs: find-root: Output matched root when searching all roots

[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 <marc@merlins.org>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Qu Wenruo 2015-08-25 10:44:56 +08:00 committed by David Sterba
parent 96fbc6a146
commit 3eb8836424

View File

@ -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))